ADO使用步驟方法:
1. 初始化COM庫,引入ADO庫定義文件
2. 用Connection對象連接數據庫
3. 利用建立好的連接,通過Connection、Command對象執行SQL命令,或利用Recordset對象取得結果記錄集進行查詢、處理
4. 使用完畢后關閉連接釋放對象
開發環境:VC6、SQL Server2000
工程:Win32控制台應用程序
先創建數據庫mysqltest,新建一張表StuMessage,其中包含列ID、StuName、StuSex、StuAge、StuScore
建立Win32控制台應用程序,空項目即可,這里以adotest為例,源文件為adotest.cpp
建立C++類,類名例為CADO。
在ADO.h的#prama once后添加:#import "c:\program files\common files\system\ado\msado15.dll no_namespace rename("EOF", "adoEOF")
添加兩個變量:_ConnectionPtr m_pConnection
_RecordsetPtr m_pRecordset
添加三個函數:void Connect(void)
void ExitConnect(void)
_RecordsetPtr& GetRecordset(_bstr_t SQL)
在ADO.cpp中將添加的三個函數填滿:
void CADO::Connect(void)
{
try{
::CoInitialize(NULL); //初始化COM環境
m_pConnection.CreateInstance(__uuidof(Connection)); //創建連接對象
HRESULT hr=m_pConnection->Open("Provider=SQLOLEDB;Data Source=LITTLEX;Initial Catalog=mysqltest;","nihao","111111",-1);
if(hr!=S_OK)
cout<<"Can not connect to the specified database!"<<endl;
}
catch(_com_error e){
cout<<e.Description()<<endl;
}
}
void CADO::ExitConnect(void)
{
if(m_pRecordset!=NULL){
m_pRecordset->Close();
m_pConnection->Close();
}
::CoUninitialize(); //釋放環境
}
_RecordsetPtr& ADO::GetRecordset(_bstr_t SQL)
{
m_pRecordset=NULL;
CADO link;
try{
if(m_pConnection==NULL)
Connect();
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open((_bstr_t)SQL, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
}
catch(_com_error e){
cout<<e.Description()<<endl;
m_pRecordset=NULL;
return m_pRecordset;
}
return m_pRecordset;
}
主程序如下:(只是實現了簡單的向數據庫中寫數據)
void main()
{
string sql;
CADO record;
record.Connect();
_RecordsetPtr m_pRecordset;
sql="select * from StuMessage";
_bstr_t bstr_t(sql.c_str());
m_pRecordset=record.GetRecordset(bstr_t);
m_pRecordset->AddNew();
m_pRecordset->PutCollect("ID", _variant_t("1"));
m_pRecordset->PutCollect("StuName", _variant_t("edward"));
m_pRecordset->PutCollect("StuSex", _variant_t("m"));
m_pRecordset->PutCollect("StrAge", _variant_t("17"));
m_pRecordset->PutCollect("StrScore", _variant_t("98"));
m_pRecordset->Update();
record.ExitConnect();
}