麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

VC++下使用ADO編寫數據庫程序(1)

2019-11-17 05:15:52
字體:
來源:轉載
供稿:網友
預備:(1)、引入ADO類 #import "c:/PRogram files/common files/system/ado/msado15.dll" /

no_namespace /

rename ("EOF", "adoEOF")

(2)、初始化COM在MFC中可以用AfxOleInit();非MFC環境中用:

CoInitialize(NULL);

CoUnInitialize();(3)#import 包含后就可以用3個智能指針了:_ConnectionPtr、_RecordsetPtr和_CommandPtr1.連接和關閉數據庫 (1)連接 例子:連接access數據庫

AfxOleInit();//初始化

HRESULT hr;

try

{

hr = m_pConnection.CreateInstance("ADODB.Connection");///創建Connection對象

if(SUCCEEDED(hr))

{

m_pConnection->ConnectionTimeout = 0;

hr = m_pConnection->Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb", "", "", adModeUnknown);

//m_pConnection->PutDefaultDatabase ((_bstr_t)"DB");//設置默認數據庫m_pCommand.CreateInstance(__uuidof(Command));

m_pCommand->CommandTimeout = 5;

m_pCommand->ActiveConnection = m_pConnection;

}

}

catch(_com_error e)///捕捉異常

{

CString errormessage;

errormessage.Format("連接數據庫失敗!/r/n錯誤信息:%s",e.ErrorMessage());

AfxMessageBox(errormessage);///顯示錯誤信息

}(2)、關閉 //假如數據庫連接有效

if( m_pConnection->State )

m_pConnection->Close();

m_pConnection = NULL;  (3)、設置連接時間 //設置連接時間-----------------------------------

pConnection->put_ConnectionTimeout(long(5));

2.打開一個結果集(1)打開,首先創建一個_RecordsetPtr實例,然后調用Open()得到一條SQL語句的執行結果

_RecordsetPtrm_pRecordset;

m_pRecordset.CreateInstance(__uuidof(Recordset));// 在ADO操作中建議語句中要常用try...catch()來捕捉錯誤信息,

// 因為它有時會經常出現一些意想不到的錯誤。jingzhou xu

try

{

m_pRecordset->Open("SELECT * FROM DemoTable",// 查詢DemoTable表中所有字段

m_pConnection.GetInterfacePtr(),  // 獲取庫接庫的IDispatch指針

adOpenDynamic,

adLockOptimistic,

adCmdText);

}

catch(_com_error *e)

{

AfxMessageBox(e->ErrorMessage());

}(2)關閉結果集 m_pRecordset->Close();3.操作一個結果集(1)、遍歷(讀取)

a)、用pRecordset->adoEOF來判定數據庫指針是否已經移到結果集的末尾了;m_pRecordset->BOF判定是否 在第一條記錄前面: while(!m_pRecordset->adoEOF)

{

var = m_pRecordset->GetCollect("Name");

if(var.vt != VT_NULL)

strName = (LPCSTR)_bstr_t(var);

var = m_pRecordset->GetCollect("Age");

if(var.vt != VT_NULL)

strAge = (LPCSTR)_bstr_t(var);

m_AccessList.AddString( strName + " --> "+strAge );

m_pRecordset->MoveNext();

}
b)、取得一個字段的值的辦法有兩種辦法一是//表示取得第0個字段的值 m_pRecordset->GetCollect("Name");或者 m_pRecordset->GetCollect(_variant_t(long(0));二是

pRecordset->get_Collect("COLUMN_NAME");或者 pRecordset->get_Collect(long(index));(2)、添加a)、調用m_pRecordset->AddNew();

b)、調用m_pRecordset->PutCollect();給每個字段賦值

c)、調用m_pRecordset->Update();確認(3)、修改

(4)、刪除

a)、把記錄指針移動到要刪除的記錄上,然后調用Delete(adAffectCurrent) try

{

// 假設刪除第二條記錄

m_pRecordset->MoveFirst();

m_pRecordset->Move(1);       

// 從0開始

m_pRecordset->Delete(adAffectCurrent); 

// 參數adAffectCurrent為刪除當前記錄

m_pRecordset->Update();

}

catch(_com_error *e)

{

AfxMessageBox(e->ErrorMessage());

} 預備:(1)、引入ADO類 #import "c:/program files/common files/system/ado/msado15.dll" /

no_namespace /

rename ("EOF", "adoEOF")

(2)、初始化COM在MFC中可以用AfxOleInit();非MFC環境中用:

CoInitialize(NULL);

CoUnInitialize();(3)#import 包含后就可以用3個智能指針了:_ConnectionPtr、_RecordsetPtr和_CommandPtr1.連接和關閉數據庫 (1)連接 例子:連接Access數據庫

AfxOleInit();//初始化

HRESULT hr;

try

{

hr = m_pConnection.CreateInstance("ADODB.Connection");///創建Connection對象

if(SUCCEEDED(hr))

{

m_pConnection->ConnectionTimeout = 0;

hr = m_pConnection->Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb", "", "", adModeUnknown);

//m_pConnection->PutDefaultDatabase ((_bstr_t)"DB");//設置默認數據庫m_pCommand.CreateInstance(__uuidof(Command));

m_pCommand->CommandTimeout = 5;

m_pCommand->ActiveConnection = m_pConnection;

}

}

catch(_com_error e)///捕捉異常

{

CString errormessage;

errormessage.Format("連接數據庫失敗!/r/n錯誤信息:%s",e.ErrorMessage());

AfxMessageBox(errormessage);///顯示錯誤信息

}(2)、關閉 //假如數據庫連接有效

if( m_pConnection->State )

m_pConnection->Close();

m_pConnection = NULL;  (3)、設置連接時間 //設置連接時間-----------------------------------

pConnection->put_ConnectionTimeout(long(5));

2.打開一個結果集(1)打開,首先創建一個_RecordsetPtr實例,然后調用Open()得到一條SQL語句的執行結果

_RecordsetPtrm_pRecordset;

m_pRecordset.CreateInstance(__uuidof(Recordset));// 在ADO操作中建議語句中要常用try...catch()來捕捉錯誤信息,

// 因為它有時會經常出現一些意想不到的錯誤。jingzhou xu

try

{

m_pRecordset->Open("SELECT * FROM DemoTable",// 查詢DemoTable表中所有字段

m_pConnection.GetInterfacePtr(),  // 獲取庫接庫的IDispatch指針

adOpenDynamic,

adLockOptimistic,

adCmdText);

}

catch(_com_error *e)

{

AfxMessageBox(e->ErrorMessage());

}
(2)關閉結果集 m_pRecordset->Close();3.操作一個結果集(1)、遍歷(讀取)

a)、用pRecordset->adoEOF來判定數據庫指針是否已經移到結果集的末尾了;m_pRecordset->BOF判定是否 在第一條記錄前面: while(!m_pRecordset->adoEOF)

{

var = m_pRecordset->GetCollect("Name");

if(var.vt != VT_NULL)

strName = (LPCSTR)_bstr_t(var);

var = m_pRecordset->GetCollect("Age");

if(var.vt != VT_NULL)

strAge = (LPCSTR)_bstr_t(var);

m_AccessList.AddString( strName + " --> "+strAge );

m_pRecordset->MoveNext();

}b)、取得一個字段的值的辦法有兩種辦法一是//表示取得第0個字段的值 m_pRecordset->GetCollect("Name");或者 m_pRecordset->GetCollect(_variant_t(long(0));二是

pRecordset->get_Collect("COLUMN_NAME");或者 pRecordset->get_Collect(long(index));(2)、添加a)、調用m_pRecordset->AddNew();

b)、調用m_pRecordset->PutCollect();給每個字段賦值

c)、調用m_pRecordset->Update();確認(3)、修改

(4)、刪除

a)、把記錄指針移動到要刪除的記錄上,然后調用Delete(adAffectCurrent) try

{

// 假設刪除第二條記錄

m_pRecordset->MoveFirst();

m_pRecordset->Move(1);       

// 從0開始

m_pRecordset->Delete(adAffectCurrent); 

// 參數adAffectCurrent為刪除當前記錄

m_pRecordset->Update();

}

catch(_com_error *e)

{

AfxMessageBox(e->ErrorMessage());

}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产瑟瑟视频 | 在线免费观看毛片 | 在线观看免费毛片视频 | 青青草成人影视 | 久久精品一级片 | 1024亚洲天堂 | 性生活香蕉视频 | 欧美一页| 国产精品视频成人 | 久久最新网址 | 99成人精品视频 | 久久精品视频16 | 欧美激情在线播放 | 三级xxxx| 成人三区四区 | 欧美在线观看视频网站 | 亚洲国产高清自拍 | 国产精品免费观看视频 | 精品久久中文网址 | 性生活视频一级 | 午夜国产精品成人 | 亚洲成人网一区 | 中文字幕四区 | 成人宗合网 | 午夜视频在线在免费 | 亚洲免费网站 | 黄色片网站在线免费观看 | 成年毛片| 手机免费看一级片 | 精品一二三区视频 | 日本精品免费观看 | 欧美h版在线观看 | 一区国产在线观看 | 国产精品视频成人 | 国产女同玩人妖 | 操碰视频在线观看 | 激情宗合| 一本免费视频 | 久久久久国产成人精品亚洲午夜 | 日本高清一级片 | 色婷婷一区二区三区 |