ADO连接本机本地SQLSERVER数据库[基本]

来源:互联网 发布:天天助手计划软件 编辑:程序博客网 时间:2024/06/14 15:27
#include "stdafx.h"#include <iostream>int _tmain(int argc, _TCHAR* argv[]){_ConnectionPtrm_pConnection;_RecordsetPtrm_pRecordset;// _CommandPtrm_pCommand;// _ParameterPtrm_pParameter;::CoInitialize(NULL);try{HRESULT hr = 0;hr = m_pConnection.CreateInstance(__uuidof(Connection));if (FAILED(hr)){throw std::exception("m_pConnection.CreateInstance errorr!");}hr = m_pConnection->Open("Provider=SQLOLEDB;Data Source=LIYOUHONG\\SQLEXPRESS;Initial Catalog=MyTestConnection;Integrated Security=SSPI;","","",adModeUnknown);if (FAILED(hr)){throw std::exception("m_pConnection->Open error");}hr = m_pRecordset.CreateInstance(__uuidof(Recordset));if (FAILED(hr)){throw std::exception("m_pRecordset.CreateInstance error");}m_pRecordset->CursorLocation = adUseClient;m_pRecordset->PutActiveConnection(m_pConnection.GetInterfacePtr());_bstr_t strSql = "select * from TestTable1";hr = m_pRecordset->Open(_bstr_t(strSql), vtMissing, adOpenDynamic, adLockBatchOptimistic, adCmdText);if (FAILED(hr)){throw std::exception("m_pRecordset->Open error");}_variant_t RecordsAffected;while (!m_pRecordset->adoEOF){RecordsAffected = m_pRecordset->GetCollect(_variant_t((long)0));m_pRecordset->MoveNext();}}catch (_com_error e){cout<<e.ErrorMessage()<<endl;}catch(std::exception& e){cout<<e.what()<<endl;}m_pRecordset->Close();m_pConnection->Close();::CoUninitialize();return 0;}

stdafx.h中需要加入的语句

#import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF", "adoEOF")

注意事项:

1. 一开始先在工程中立刻加入 #import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF", "adoEOF"),然后进行编译,在debug(如果配置是debug)下会生成msado15.tlh和msado15.tli这两个文件,然后把这两个文件放入工程目录下,加入工程,如此那些_ConnectionPtr,_RecordsetPtr才会有定义可找。(至少我是这样做的,不知其他人是不是可以直接成功)

2. 连接数据库时这里使用的是“可信任连接”方式,就是使用windows的身份认证,如果你是用当前用户安装的sqlserver实例,则就可以直接连接成功。其他方式还有网络模式,一般模式,尚未做过试验。

3. 执行时把Data Source改成自己的sqlserver实例名称。

4. 以上代码也属于本人网上查找,然后东拼西凑而来,仅供参考,不当之处,望不吝赐教。


原创粉丝点击