关于ODBC操作ORACLE数据库的问题
为什么取不到记录集中某条记录的某个字段的内容!!!
看了论坛中一些方法,一一试过,可是都不行.报无效的列好的错误???????????
代码如下
long j=0;
CDatabase db;
    db.OpenEx("DSN=mydata;UID=winnix;PWD=winnix",CDatabase::noOdbcDialog);
CMRecord record(&db); CString sql,itemdata;
sql=_T("SELECT U_ACCOUNT,U_NAME,U_ADDRESS FROM T_USER WHERE T_USER.U_ACCOUNT LIKE '%");
sql+=m_userid;
sql+=_T("%'");
try{
if(record.IsOpen())
record.Close();
         record.Open(CRecordset::dynaset,sql,CRecordset::none);
short index = record.GetODBCFieldCount();
while(!record.IsEOF())
{
short col=0;
                       record.GetFieldValue(col,itemdata);//如果我的col取0,1,2则报无效列号错误。如果再大些,则报无效的列号或者索引的错误!
    pList->InsertItem(j,itemdata);
for(short i=0;i<index;i++) { record.GetFieldValue(i,itemdata); pList->SetItemText(j,i,itemdata);
}
record.MoveNext();
j++;
}
}
catch(CDBException *e)
{

MessageBox(e->m_strError,"错误",MB_OK|MB_ICONERROR);
e->Delete();

}谢谢
有做过的给点建议,希望得到调试成功的代码!
再次感谢

解决方案 »

  1.   

    把ODBC的Driver换成oracle自己的Driver吧http://blog.csdn.net/treaturebeauty/archive/2007/07/24/1704795.aspx
      

  2.   

    大侠
    用ADO写的程序访问数据库很慢哦
    就是因为用ADO访问慢才改用ODBC的呀
      

  3.   

    貌似ODBC是最慢的,比ado还要慢
    想快就用oci
      

  4.   

    楼主搞错了,ADO是基于COM的,效率上肯定比ODBC高,而且使用的是Oracle自己提供的ado提供者驱动。
      

  5.   

    可是我们以前写的几个用ADO访问ORACLE数据库的都显得很慢啊!
    所以试试用ODBC谢谢,顶上!有没有哪位大师测试通过获取成功的代码段啊
    我拿来参考下
    再次感谢
      

  6.   

    楼上这些人不会就不要发贴,专扯些没用的,关键是帮人家解决问题。我有些数据库编程方面的好书,要的话可以问我要,odbc我没用过
      

  7.   

    1. 调试取得sql变量的字符串值,在oracle中直接执行看看报不报错??
    2. record.Open(CRecordset::dynaset,sql,CRecordset::none);
        改成:record.Open(CRecordset::dynaset,sql);
      

  8.   

    ADO 比 ODBC 效率高,帮楼主纠正这种看法,怎么是没用.
      

  9.   

    TMD
    什么鸟东西,就是取不出来.太郁闷了
    网络上的方法都试来试去
    还是无效的列号
    崩溃!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1111
      

  10.   

    换了驱动换成ORACLE ODBC DRIVER,终于成功了................................................................
    功夫不负有心人
    请问要怎么给分给你们啊
    多谢大家的跟贴
    再次感谢