VS利用ADO连接数据库的操作

来源:互联网 发布:钉钉办公软件优缺点 编辑:程序博客网 时间:2024/05/17 18:46
<span style="font-size:14px;"><span style="color:#333333;"><span style="background-color: rgb(245, 245, 245);"><span style="font-family:Helvetica;">(1)初始化COM库,引入ADO库定义文件<br style="color: rgb(51, 51, 51); line-height: 24px; font-family: Helvetica,Tahoma,Arial,sans-serif; font-size: 14px; background-color: rgb(245, 245, 245);" /><span style="line-height: 24px;">(2)用Connection对象连接数据库</span></span></span></span></span><br style="color: rgb(51, 51, 51); line-height: 24px; font-family: Helvetica,Tahoma,Arial,sans-serif; font-size: 14px; background-color: rgb(245, 245, 245);" /><span style="font-family:Helvetica,Tahoma,Arial,sans-serif;font-size:14px;color:#333333;line-height: 24px; background-color: rgb(245, 245, 245);">(3)利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。</span><br style="color: rgb(51, 51, 51); line-height: 24px; font-family: Helvetica,Tahoma,Arial,sans-serif; font-size: 14px; background-color: rgb(245, 245, 245);" /><p><span style="font-family:Helvetica,Tahoma,Arial,sans-serif;font-size:14px;color:#333333;line-height: 24px; background-color: rgb(245, 245, 245);">(4)使用完毕后关闭连接释放对象。</span></p>
 
#include <iostream>#include <string>#include <vector>#import "C:\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")using namespace std;int main(void){CoInitialize(NULL);_ConnectionPtr pCon(__uuidof(Connection));_RecordsetPtr pRSet(__uuidof(Connection));try{pCon.CreateInstance("__uuidof(Connection)");} catch(_com_error e){cout<<"创建连接实例失败!"<<endl;cout<<e.Description()<<endl;cout<<e.HelpFile()<<endl;return 0;}try{pCon->Open("driver={SQL Server};Server=.;DATABASE=linping;","sa","",adModeUnknown);} catch(_com_error e){cout<<"数据库初始化失败!"<<endl;cout<<e.Description()<<endl;cout<<e.HelpFile()<<endl;return 0;}cout<<"连接成功!"<<endl;try{pRSet = pCon->Execute("select * from card",NULL,adCmdText);if(!pRSet->adoBOF){pRSet->MoveFirst();}else{cout<<"表内数据为空!"<<endl;return 0;}vector<_bstr_t> column_name;for(int i = 0;i<pRSet->Fields->GetCount();i++){cout<<pRSet->Fields->GetItem(_variant_t((long)i))->Name<<endl;column_name.push_back(pRSet->Fields->GetItem(_variant_t((long)i))->Name);}while(!pRSet->adoEOF){vector<_bstr_t>::iterator iter = column_name.begin();for(iter;iter!=column_name.end();iter++){if(pRSet->GetCollect(*iter).vt !=VT_NULL){cout<<(_bstr_t)pRSet->GetCollect(*iter)<<endl;}else{cout<<"NULL"<<endl;}}pRSet->MoveNext();cout<<endl;}} catch(_com_error &e){cout<<e.Description()<<endl;cout<<e.HelpFile()<<endl;return 0;}try{pRSet->Close();pCon->Close();pRSet.Release();pCon.Release();}catch(_com_error &e){cout<<e.Description()<<endl;cout<<e.HelpFile()<<endl;return 0;}CoUninitialize();return 0;}

 



0 0