VC++6.0 使用ADO动态链接SQL Server 2005数据库
ADO(ActiveX Data Objiects)是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层,ADO是建立在OLE DB底层技术之上的搞基编程接口。ADO中最重要的对象有三个:Connection、Command和Recordset,他们分别表示连接对象、命令对象和记录集对象。
Connection对象:与数据库的 连接;Command对象:处理重复执行的查询;Recordset对象:获取数据库。
1、引用ADO库
使用预处理指令#import,在stdAfx.h头文件里进入ADO库文件(注意:不能放在stdAfx.h的开头,而应该放在所有include指令的后面,否则在编译时会出错)
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2、初始化OLE/COM库环境,在调用ADO前,必须初始化OLE/COM库环境(假设创建StudentDlg)
在StudentDlg.h文件的public中,定义ADO连接、命令、记录集变量指针
_ConnectionPtr m_pCon;
_CommandPtr m_pCom;
_RecordsetPtr m_pRec;
在StudengtDlg.Cpp的成员函数::OnInitDialog中添加如下代码:
::CoInitialize(NULL); //初始化COM库
m_pCon.CreateInstance (__uuidof(Connection));//创建连接对象(注意是两个_)
3、连接数据库
在StudengtDlg.Cpp的成员函数::OnInitDialog中接着添加如下代码:
(1) _bstr_t strConnect="Driver={SQL Server};Server=XU-PC\\MSSQL2005;Database=Student;Uid=sa;Pwd=123;";//构造连接字符串
//_bstr_t 是一个封装了char*和wchar_t*之间相关的操作,已方便在使用com对象时的字符串操作。
pConn->Open(strConnect,"","",adConnectUnspecified);//连接数据库
(2)try
{
m_pConnection->Open ("driver={SQL Server};Server=XU-PC\\MSSQL2005;Database=Student;UID=sa;PWD=xsl4283294","","",adModeUnknown)
//XU-PC\\MSSQL2005是计算机名,注意是双斜线,UID="";PWD=""写入相应的用户名和密码,这里使用SQLServer验证。adModeUnknown:权限尚未
//设置或不能确定权限。adConnectUnspecified:同步打开连接。
}
catch(_com_error_e) //try.....catch来捕获错误消息
{
AfxMessagebox("数据库连接失败");
return FALSE ;
}
4、获取记录集
在StudengtDlg.Cpp的成员函数::OnInitDialog中添加如下代码:
m_pRec.CreateInstance(__uuidof(Recordset));
try
{
m_pRec->Open("SELECT * FROM s",m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
// m_pConnection.GetInterfacePtr():获取库接库的IDispatch指针
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
数据库的连接与创建算是成功。接下来使用SQL语句进行添加、修改、删除。
SQL Server 2005 操作和注意:
(1)打开SQL Server Configuration Manager,开启服务器(有时忘了开启就会提示不能连接到数据库。
(2)打开SQL Server 2005,连接到服务器,Server对应Server name,Uid=sa;Pwd对应Password。
(3)在Student中创建表,并备份,Student右键->Tasks->Back UP Datebase->选择保存位置。