大蝦們,幫忙看看為什么在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 联系我们: