我在vc++ 6下用ado连oracle 9i,我用_ConnectionPtr, _RecordsetPtr, _CommandPtr智能指针连Oracle。能正确显示表里的数据,但添加数据时用_R
ecordsetPtr的指针pRs添加空记录时,pRs->AddNew();
程序报错,删除记录时遇到同样的原因。请问是怎么回事?会有权限的原因吗?(数据库用户有管理员权限)
连接oracle代码我不能确定正确,如下:
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance(_uuidof(Connection));
m_pConnection->Mode=adModeReadWrite;
if (SUCCEEDED(hr))
{
m_pConnection->ConnectionString = "Provider=MSDAORA;Data Source=GD;User ID=user; Password=user";
try
{
hr = m_pConnection->Open(m_pConnection->ConnectionString,"","",-1);
}
catch(_com_error &e)
{
MessageBox(e.ErrorMessage());
m_pConnection=NULL;
} }
if (SUCCEEDED(hr))
hr = m_pRecordset.CreateInstance(_uuidof(Recordset));
if (SUCCEEDED(hr))
m_bConnected = TRUE;
else
m_bConnected = FALSE;
}
catch (_com_error &e)
{
MessageBox(e.ErrorMessage());
m_bConnected = FALSE;
}
ecordsetPtr的指针pRs添加空记录时,pRs->AddNew();
程序报错,删除记录时遇到同样的原因。请问是怎么回事?会有权限的原因吗?(数据库用户有管理员权限)
连接oracle代码我不能确定正确,如下:
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance(_uuidof(Connection));
m_pConnection->Mode=adModeReadWrite;
if (SUCCEEDED(hr))
{
m_pConnection->ConnectionString = "Provider=MSDAORA;Data Source=GD;User ID=user; Password=user";
try
{
hr = m_pConnection->Open(m_pConnection->ConnectionString,"","",-1);
}
catch(_com_error &e)
{
MessageBox(e.ErrorMessage());
m_pConnection=NULL;
} }
if (SUCCEEDED(hr))
hr = m_pRecordset.CreateInstance(_uuidof(Recordset));
if (SUCCEEDED(hr))
m_bConnected = TRUE;
else
m_bConnected = FALSE;
}
catch (_com_error &e)
{
MessageBox(e.ErrorMessage());
m_bConnected = FALSE;
}
解决方案 »
- VC2008 如何将char 48显示为string "0"
- .icon图片什么函数设置其背景色可透明色?//CImage类里是哪个函数?
- 自绘按钮的一个Png透明图片问题
- 关于p2p udp nat穿透的问题
- 帮我看看!
- 在线程中如何调用CxxView里的函数?
- 我在CFileDialog对话框中选择打开多个文件,如何用getfilename()取得每个文件得名字?
- 在VC++6.0中如何得到比秒更小的单位?
- 怎么画出一个时钟图像,并使指针移动?
- 各位大哥,小弟最近编了个简单的矢量图形系统,问题多多,哪位高手相帮,小弟感激不尽!
- 初级(100):文件读取到内存,然后每八个字节一读取。最好有例子。
- 请问如何在自己定义的函数中使用TextOut()、MoveTo()和LineTo();?急用,谢谢!
m_pConnection.CreateInstance(_uuidof(Connection));
m_pConnection->Open(bstr,"","",NULL);
m_pRecordset.CreateInstance(_uuidof(Recordset));
m_pRecordset->Open(szSQL,_variant_t((IDispatch *) m_pCnn, true),adOpenStatic,adLockOptimistic,adCmdText)
在Oracle8i下可以,不知Oracle9i下行不行。
OO4O:Oracle Objects for OLE
Oracle和我写的代码都在同一台计算机上,不知是不是记录集退化。但我用Execute命令修改数据库时,若sql语句中修改两个及以上字段时,报错,改不了。若只修改一个字段时,能写入数据库。但下一条update语句报错,改不了。说是IDispatch error #3092。这是记录集退化的现象吗?
另外,我用 ->Mode=adModeReadWrite时不报错,若改成 ->Mode=adModeReadWrite|adModeShareDenyNone就编译不了。请问是怎么回时,我都快疯了。