《Vc++实现SQL Server的远程连接SQLOLEDB.docx》由会员分享,可在线阅读,更多相关《Vc++实现SQL Server的远程连接SQLOLEDB.docx(4页珍藏版)》请在三一办公上搜索。
1、Vc+实现SQL Server的远程连接SQLOLEDBVc+(MFC)实现SQL Server的远程连接一、ADO概述 ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口OLE.DB 提供者访问和操作数据库服务器中的数据。ADO 最主要的优点是易于使用、速度快、内存支出少和磁喻,OLE 自动化接口。 二、利用ADO来实现对SQL Server的远程连接 1、首先是引入ADO库文件 使用ADO前必须在你的工程中的stdafx.h文件里直接引入符号#import引入A如下内容: #include #include #import C:p
2、rogram filescommon filessystemadomsado15.dll no_namespace rename(EOF, ADOEOF) 这行语句声明在工程中使用ADO,但不使用ADO的名字改名为ADOEOF。现在不需添加另外的头文件,就可以使用ADO接口了。 2、初始化OLE/COM库环境 在InitInstance函数下面初始化OLE/COM库 BOOL * :InitInstance /下面是需要添加的代码: if (!AfxOleInit)/初始化OLE/COM库环境 AfxMessageBox(OLE初始化出错!); return FALSE; . 3、下面是连接数
3、据库代码: 定义_ConnectionPtr接口和_RecordsetPtr接口。如下: _ConnectionPtr m_pConnection; _RecordsetPtr m_pRecordset; 实现代码: HRESULT hr; try hr = m_pConnection.CreateInstance(ADODB.Connection); if (SUCCEEDED(hr) /connect database 最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。之所 _bstr_t strConnect=Provider=SQLOLEDB
4、.1;Initial Catalog=“数据库名称”;Data Source=远程IP; hr = m_pConnection-Open(strConnect,用户名,密码,adModeUnknown); AfxMessageBox(连接成功); catch (_com_error e) CString errormessage; errormessage.Format(连接数据库失败!rn错误信息:%s,e.ErrorMessage); AfxMessageBox(errormessage); return ; 4、查询数据库信息: 添加listctrl控件,并定义为m_list ;在win
5、fo表中查询id,name,ip信息。 并初始化listctrl控件各列值:代码如下: m_list.InsertColumn(0,ID); m_list.InsertColumn(1,Name); m_list.InsertColumn(1,IP); CRect rect3; m_list.GetClientRect(rect3); m_list.SetColumnWidth(0,rect3.Width/3); m_list.SetColumnWidth(1,rect3.Width/3); m_list.SetColumnWidth(2,rect3.Width/3); 下面是查询实现代码:
6、int intm; try _variant_t RecordsAffected; m_pRecordset = m_pConnection-Execute(SELECT id,name,ip from winfo,&RecordsAffected,adC while(!m_pRecordset-ADOEOF) _variant_t ID, Name, IP; ID= m_pRecordset-GetCollect(id); Name=m_pRecordset-GetCollect(name); IP=m_pRecordset-GetCollect(ip); intm=m_list.Inser
7、tItem(0,(_bstr_t)ID); m_list.SetItem(intm,1,1,(_bstr_t)IP,NULL,0,0,0); m_list.SetItem(intm,2,1,(_bstr_t)Name,NULL,0,0,0); m_pRecordset-MoveNext; m_pRecordset-Close; catch (_com_error e) CString errormessage; errormessage.Format(查询失败!rn错误信息:%s,e.ErrorMessage); AfxMessageBox(errormessage); return ; 通过上述语句将id ,name ,ip信息显示在listctr控件中。 5、注意 由于COM对象是跨平台的,它使用了一种通用的方法来处理各种类型的数据,因此CString 类和COM对COM对象和C+类型的数据。_vatiant_t和_bstr_t就是这样两种对象。它们提供了通用的方法转换COM对象