我用的是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 个解决方案
AfxMessageBox(e.ErrorMessage()) // 看看详细错误
你是以什么用户名登录ORACLE的 有写的权限么。
1.在m_pRecordset.CreateInstance("ADODB.Recordset");的后面添加如下代码试试看:
//设置服务器端游标
m_pRecordset->CursorLocation = adUseServer;//adUseClient;adUseNone
2.AddNew()必须和Update()同时使用。也就是在m_pRecordset->PutCollect("BJZL",vLX);的后面要写:m_pRecordset->Update();
我单步执行到AddNew()时,就跳出了
错误信息代码是0X800A0CB3,这个到哪里可以看出是什么原因啊
我也遇到了同样的问题。用户有读写权。
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();就跳出
查看一下e.Despcription()(or ...)
ORACLE用起来确实有点麻烦;
最好用
SELECT DBO.DBNAME ....
特别是在你访问别的用户创建的表