大虾们,帮忙看看为什么在VC++中用ADO写ORCALE数据库时出问题啊,读可以,一写就跳出了(m_pRecordset->AddNew())这个语句错误


我用的是ADO,在InitInstance中用connect连接数据库正确
而且读数据库的内容也是正确的,但是写的时候就通不过了,不知道是什么原因
可以保证,绝对有读写权
HRESULT hr;
try
{
    m_pRecordset.CreateInstance("ADODB.Recordset");
    hr=m_pRecordset->Open("SELECT * FROM QK_ZZQGD_BJ",_variant_t(theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
    m_pRecordset->AddNew();   //调试的时候,这里出问题
    if(m_pRecordset->adoEOF){
    
    vBH="aaaaa";
    vLX="bbbbb";
    m_pRecordset->PutCollect("BJBH",vBH);
    m_pRecordset->PutCollect("BJZL",vLX);
    }
     }
    catch(_com_error e)///捕捉异常
    {
        AfxMessageBox("读取数据库失败!");///显示错误信息
    }

8 个解决方案

#1


AfxMessageBox(e.ErrorMessage()) // 看看详细错误

你是以什么用户名登录ORACLE的 有写的权限么。

#2


1.在m_pRecordset.CreateInstance("ADODB.Recordset");的后面添加如下代码试试看:
  //设置服务器端游标
  m_pRecordset->CursorLocation = adUseServer;//adUseClient;adUseNone

2.AddNew()必须和Update()同时使用。也就是在m_pRecordset->PutCollect("BJZL",vLX);的后面要写:m_pRecordset->Update();

#3


我单步执行到AddNew()时,就跳出了
错误信息代码是0X800A0CB3,这个到哪里可以看出是什么原因啊

#4


你看看hr返回什么?是不是哪一块就出错了

#5


我也遇到了同样的问题。用户有读写权。
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open("SELECT * FROM Budget", m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);

m_pRecordset->AddNew();
m_pRecordset->PutCollect("MoneyA", _variant_t(m_fMoney));
m_pRecordset->Update();
m_pRecordset->Close();
m_pRecordset = NULL;
不知道是怎么回事。有时到m_pRecordset->AddNew();就跳出
有时到m_pRecordset->Update();就跳出

#6


查看一下e.Despcription()(or ...)

#7


ORACLE用起来确实有点麻烦;
最好用
SELECT DBO.DBNAME ....
特别是在你访问别的用户创建的表

#8


数据库连接字段有问题,我以前也碰到过

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: