被ADO和Oracle搞疯了

被ADO和Oracle搞疯了.高手请进
最近第一次用Oracle做开发,以前用Ado方式做过MsSql,Access,Mysql,db2.都没有遇到这次这样变态的问题.
我是采用的Oracle的Oledb驱动.

请大家看一下代码
try
{
    TESTHR(m_pConnection.CreateInstance(__uuidof(Connection)));
    m_pConnection-> Open(Provider=OraOLEDB.Oracle;Data   Source=a_localhost;User   ID=SYSTEM;Password=manager ", " ", " ",adModeUnknown);
    char   strSql[512];
    sprintf(strSql,   "select   *   from   A ");
    _RecordsetPtr   pRst( "ADODB.Recordset ");
    pRst-> Open(strSql,   _variant_t((IDispatch   *)m_pConnection,true),  
adOpenStatic,   adLockReadOnly,   adCmdText);
    if   (!(pRst-> EndOfFile)){
        pRst-> MoveFirst();
        ....
    }
}
catch   (_com_error   &e)   {
PrintErrorLog( "CExpertSelSvr异常,异常信息:%s ",   e.ErrorMessage());
m_pConnection.Release();
return   false;
}
catch   (...)   {
ErrorLog( "CExpertSelSvr未知异常 ");
return   false;
    }

当A表中没有数据时,可以执行下去.只要A表中有数据,在pRst-> Open这里就会出现异常,而且不是ADO异常,是catch   (...)捕获.

请指点一下,我犯了什么低级错误???


------解决方案--------------------
偶用的是这个……
adOpenKeyset,
adLockOptimistic,
adCmdText));
------解决方案--------------------
pRst-> Open(
strSql,
_variant_t((IDispatch *)m_pConnection,true),
adOpenForwardOnly,
adLockReadOnly,
adCmdText);

pRst-> MoveFirst();//去掉,仅向前的游标不支持向前移动游标

//不知道行不行,以前一直都这样用,没有出现什么问题
------解决方案--------------------
ADOPENSTATIC(=3)
可读写,当前数据记录可*移动,可看到新增记录

ADLOCKREADONLY(=1)
缺省锁定类型,记录集是只读的,不能修改记录

是否这个原因呢?
这两个一起用,那到底是只读呢,还是可读写?
------解决方案--------------------
vieri_ch老大你眼花了?
楼主好像没用adOpenForwardOnly啊~
------解决方案--------------------
把Provider=OraOLEDB.Oracle 改为Provider=MSDAORA.1
------解决方案--------------------
偶用的就是Provider=OraOLEDB.Oracle.1
------解决方案--------------------
to 21bird
哦,我的意思是我以前用oracle这么组合游标类型和锁定类型,建议楼主业这么试试看看,可能意思没有表达清楚
------解决方案--------------------
连接串
Provider=OraOLEDB.Oracle.1;Data Source=服务名(别名);Server=IP地址
我一直用的这个。没问题
------解决方案--------------------
恭喜,接分
------解决方案--------------------
恭喜,接分。oracle的文档一直做得不好。
------解决方案--------------------
被200分所吸引进来看看,可惜看了后因水平问题不能解决 :(
------解决方案--------------------
看到这个问题的解决,有点让人无可奈何。也曾经遇到类似的问题。作为C++/VC开发者在项目中经常性的要为与之接口的java模块或者oracle模块来调整自己的代码,大量的问题出现之后,甚至属于上层系统的问题以及数据库的问题,经常都是C++开发者而发现并解决,而有些开发者对于系统之间的问题往往不太愿意去追查和解决,可能这样做不够优雅,对于JVM和中间件系统有着盲目不可*的信任。无奈啊
------解决方案--------------------
从楼主的表述看,你这个项目在开发流程中存在较大的问题。
------解决方案--------------------