// TODO: Add your control notification handler code here
// 初始化COM,创建ADO连接等操作
AfxOleInit();
m_pConnection.CreateInstance(__uuidof(Connection));

// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些意想不到的错误。
try                 
{
             //OraOLEDB.Oracle.1;
      m_pConnection->Open("Provider=OraOLEDB.Oracle.1;Password=hbTrip;Persist Security Info=True;User ID=hbTrip;Data Source=nwj2","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败!");
}
     HRESULT hr;
try
{
_RecordsetPtr pHandlerRecordset;
pHandlerRecordset.CreateInstance(__uuidof(Recordset));
try
{
hr=pHandlerRecordset->Open("SELECT * FROM web_ad",                // 查询DemoTable表中所有字段
m_pConnection.GetInterfacePtr(),  // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}  以上代码是一个连接ORACLE数据库的,但为什么执行查询是总是返回265946错误.即hr的值,查了一些相关资源仍不知出错原因,望高手们指教.

解决方案 »

  1.   

    试试 OLESTR("SELECT * FROM web_ad")
      

  2.   

    adOpenDynamic  改为 adOpenStatic 就OK了,但我想问adOpenDynamic和adOpenStatic的区别何在?
    采adOpenDynamic 动态游标,的优点是什么? 用 adOpenStatic 会不会对我数据库的增删改有影响?
      

  3.   

    同意AAAAAANWJ(阿A) 的看法。
      

  4.   

    adOpenDynamic  改为 adOpenStatic 就OK了,但我想问adOpenDynamic和adOpenStatic的区别何在?
    采adOpenDynamic 动态游标,的优点是什么? 用 adOpenStatic 会不会对我数据库的增删改有影响?
    adOpenDynamic   当其它用户用数据更新在在记录集中反应,所以说是动态的
    adOpenStatic 当其它用户用数据更新在在记录集中不应,所以说是静态的,如果没有其它用户r同时操作数据,这两值设成什么都无所谓了,如果有其它用户在生成记录集以后更改了数据,静态的不会反应,对你的操作影响就不用我说了罢