VC使用ADO访问sql server数据库

来源:互联网 发布:微信云控软件 编辑:程序博客网 时间:2024/05/01 08:27

软件:vs2010、sql server2005代码如下:
#include <cstring>#include <iostream>using namespace std;//1、添加对ADO的支持#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")int main(){CoInitialize(NULL);//2、创建实例_ConnectionPtr   pCon(__uuidof(Connection));_RecordsetPtr    pReS(__uuidof(Recordset));_CommandPtr      pCmd(__uuidof(Command));//3、打开数据库连接try{//pCon->Open("Provider=SQLOLEDB;Data Source=Localhost,1433;Initial Catalog=QPTreasureDB;uid=sa;pwd=123;","","",adConnectUnspecified);pCon->Open("Provider=SQLOLEDB;Data Source=Localhost,1433;uid=sa;pwd=123;","","",adConnectUnspecified);}catch(...){cout<<"打开数据库失败。。。"<<endl;goto endA;}//4、读取数据(对upadate类似操作都可以用_ConnectionPtr的Execute即可,不需要后面步奏;而select时,不管是用_ConnectionPtr还是//_RecordsetPtr还是_CommandPtr都会直接(参数)或间接(返回值)使用到_ConnectionPtr和_RecordsetPtr同时使用才能得到结果,实例如下)LPCTSTR strSql="SELECT sum(Score) Score FROM QPTreasureDB.dbo.GameScoreInfo";try{//---------方式 1)、_ConnectionPtr----------------pReS=pCon->Execute(_bstr_t(strSql),NULL,adCmdText);//---------方式 2)、_RecordsetPtr----------------//pReS->Open(_variant_t(strSql),(_variant_t)( (IDispatch*)pCon),adOpenDynamic,adLockOptimistic,adCmdText);//---------方式 3)、_CommandPtr----------------//pCmd->put_ActiveConnection((_variant_t)((IDispatch*)pCon));//pCmd->CommandText=_bstr_t(strSql);//pReS=pCmd->Execute(NULL,NULL,adCmdText);//操作数据while(!pReS->adoEOF){//_variant_t  var=pReS->GetCollect("Score");//var.ChangeType(VT_DECIMAL); //或者"(DECIMAL)var;"(重载了DECIMAL)//ULONGLONG score=var.decVal.Lo64;//重载了ULONGLONG,另外如果查到的Score不是数字而是字符串,则需先_bstr_t转换:_bstr_t(pReS->GetCollect("Score"))ULONGLONG score=pReS->GetCollect("Score");  cout<<"the Score is "<<score<<endl;pReS->MoveNext();}}catch(_com_error& e){cout<<"操作数据库时出错:"<<e.Description()<<endl;goto endA;}//释放资源endA:try{pReS->Close();pCon->Close();pReS.Release();   //注意是'.'不是'->'pCon.Release();pCmd.Release();}catch(_com_error& e){cout<<"释放资源时出错:"<<e.Description()<<endl;}CoUninitialize();system("pause");return 0;}


0 0
原创粉丝点击