2024年3月8日发(作者:)
Vc++(MFC)实现SQL Server的远程连接(ADO实现)
一、ADO概述
ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口 提供者访问和操作数据库服务器中的数据。ADO 最主要的优点是易于使用、速度快、内存支出少和磁喻,OLE 自动化接口。
二、利用ADO来实现对SQL Server的远程连接
1、首先是引入ADO库文件 使用ADO前必须在你的工程中的stdafx.h文件里直接引入符号#import引入A如下内容:
#include
#include
#import "C:program filescommon "
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、下面是连接数据库代码:
定义_ConnectionPtr接口和_RecordsetPtr接口。如下:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
实现代码:
HRESULT hr;
try
{
hr = m_Instance("tion");
if (SUCCEEDED(hr))
{
//connect database
最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。之所
_bstr_t strConnect="Provider=SQLOLEDB.1;Initial Catalog=“数据库名称”;Data Source=远程IP";
hr = m_pConnection->Open(strConnect,"用户名","密码",adModeUnknown);
AfxMessageBox("连接成功");
}
}
catch (_com_error e)
{
CString errormessage;
("连接数据库失败!rn错误信息:%s",essage());
AfxMessageBox(errormessage);
return ;
}
4、查询数据库信息:
添加listctrl控件,并定义为m_list ;在winfo表中查询id,name,ip信息。
并初始化listctrl控件各列值:代码如下:
m_Column(0,"ID");
m_Column(1,"Name");
m_Column(1,"IP");
CRect rect3;
m_entRect(rect3);
m_umnWidth(0,()/3);
m_umnWidth(1,()/3);
m_umnWidth(2,()/3);
下面是查询实现代码:
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_Item(0,(_bstr_t)ID);
m_m(intm,1,1,(_bstr_t)IP,NULL,0,0,0);
m_m(intm,2,1,(_bstr_t)Name,NULL,0,0,0);
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
}
catch (_com_error e)
{
CString errormessage;
("查询失败!rn错误信息:%s",essage());
AfxMessageBox(errormessage);
return ;
}
通过上述语句将id ,name ,ip信息显示在listctr控件中。
5、注意
由于COM对象是跨平台的,它使用了一种通用的方法来处理各种类型的数据,因此CString 类和COM对COM对象和C++类型的数据。_vatiant_t和_bstr_t就是这样两种对象。它们提供了通用的方法转换COM对象


发布评论