现将ADO访问数据库的基本步骤和方法介绍如下:
第一步:在Stdafx.h中添加
#import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF","AdoEOF")
第二步:初始化COM环境
在合适的地方添加CoInitialize(NULL);和CoUninitialize();一般来说,对于MFC应用程序最好是将它们分别放在Winapp的InitInstance()和ExitInstance()这两各函数中。而对于COM组件来说,可以略去这一步
第三步:声明对象并建立连接
_ConnectionPtr pConn;//声明一个Connection对象
_RecordsetPtr pSet;//声明一个Recordset对象
CString szConntionString =
"Provider=SQLOLEDB.1;User ID=sa;Initial Catalog=DB_NAME;Data Source=DB_SERVER";
// 连接字符串中的用户名和密码,可以放到Connection对象的Open函数中的第二个和第
// 三个参数中;
// 技巧:可以直接建一个空的udl文件,配置好后,用文本文件打开就可以看到连接字符串了
try
{
pConn.CreateInstance(__uuidof(Connection));
pConn->Open ((_bstr_t)szConntionString,"","",-1);
}
catch(_com_error &e)
{
//do something you want
}
catch(...)
{
//do something you want
}
第四步:访问数据库
try
{
pSet.CreateInstance(__uuidof(Recordset));
pSet->Open("SELECT * FROM titles",
pConn.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
CString szDispInfo;
_variant_t VValue;
if(!pSet->AdoEOF)//如果像遍历整个数据集请用while,现只访问第一条记录
{
VValue = pSet->GetCollect("title_id");//取其中的一个字段的值
szDispInfo = VValue.bstrVal;//有关_variant_t的说明请参考MSDN
}
pSet->Close();
}
catch(_com_error &e)
{
//do something you want
}
catch(...)
{
//do something you want
}
//上面的这些步骤是采用ADO进行数据库访问的最基本的方法。
另外,得到结果集中某个字段的值有如下几种方法:
_variant_t vValue;
CString szFieldValue;
1. vValue = pSet->GetCollect("title_id");
or 2. vValue = pSet->Fields->GetItem("title_id")->Value;
or 3. vValue = pSet->Fields->Item["title_id"]->Value;
szFieldValue = vValue.bstrVal;
当然,szFieldValue也可以是其他类型的变量,赋值时只要取vValue不同的成员变量就可以了
注意:Fields是结果集中当前记录的列的集合;