——此文章摘自《网络游戏服务器端编程》定价
¥
特价
¥
详细>>http://track
linktech
cn/?m_id=dangdang&a_id=A
&l=
&l_type
=
width=
height=
border=
nosave>
//使用__RecordsetPtr执行SQL语句
__RecordsetPtr MySet;
MySetCreateInstance(__uuidof(Recordset));
MySet-〉Open(
SELECT * FROM some__table
MyDbGetInterfacePtr()
adOpenDynamic
adLockOptimisticadCmdText);
现在已经有了一个数据连接和一个记录集接下来就可以使用数据了从以下代码可以看到使用ADO的__RecordsetPtr接口就不需要像DAO那样频繁地使用大而复杂的数据结构VARIANT并强制转换各种数据类型了这也是ADO的优点之一假定程序有一个名称为m__List的ListBox控件下面一段代码用__RecordsetPtr接口获取记录集数据并填充这个ListBox控件
__variant__t Holder
try
{
while(!MySet-〉adoEOF)
{
Holder = MySet-〉GetCollect(FIELD__);
if(Holdervt!=VT__NULL)
m__ListAddString((char)__bstr__t(Holder));
MySet-〉MoveNext();
}
}
catch(__com__error e)
{
CString Error = e-〉ErrorMessage();
AfxMessageBox(e-〉ErrorMessage());
}
catch() { MessageBox(ADO发生错误!);}
必须始终在代码中用try和catch来捕获ADO错误否则ADO错误会使应用程序崩溃当ADO发生运行错误时(如数据库不存在)OLE DB数据提供者将自动创建一个__com__error对象并将有关错误信息填充到这个对象的成员变量
()类型转换
由于COM对象是跨平台的它使用了一种通用的方法来处理各种类型的数据因此CString类和COM对象是不兼容的需要一组API来转换COM对象和 C++类型的数据__vatiant__t和__bstr__t就是这样两种对象它们提供了通用的方法转换COM对象和C++类型的数据
right>[http://developcsaicn/dbms/htm>] []