我用VC++编写ADO,调用AddNew()函数出错?

waterdrop31 2001-12-06 10:05:42
错误信息是:对象关闭时,操作不允许。究竟是什么原因呢?
我的这段程序是从另外一个运行无误的程序中拷过来的,可是……
请高手指教。
...全文
109 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzh 2001-12-07
  • 打赏
  • 举报
回复
你先检查一下,使用SQL语句完成添加过程有没有问题,如果有,可能是你的用户访问权限不对。如果可以,则再检查是否已成功建立了连接,可能是你的连接已被服务端断开。
waterdrop31 2001-12-07
  • 打赏
  • 举报
回复
以下是我的代码,我连的是sql数据库,用户访问权限也没有问题,因为数据库和该程序是在同一台机子上,我调试时,连上了,就是到AddNew()函数时出了问题。请高手指教。

::CoInitialize(NULL);

_ConnectionPtr pConn;
pConn.CreateInstance(__uuidof(Connection));
_RecordsetPtr pRS;
pRS.CreateInstance(__uuidof(Recordset));
......
......
try
{
pConn->Mode = adModeReadWrite;
pConn->Open(_bstr_t("mydb"), L"", L"", -1);//mydb是我的ODBC数据源
pRS->Open("myex2", _variant_t((IDispatch *) pConn,true), adOpenStatic, adLockOptimistic, adCmdTable);//myex2是mydb中的一个表
}
catch (_com_error &e)
{
AfxMessageBox (e.Description());
return false;
}
........//中间还有其他非数据库操作代码
.......
try
{
pRS->AddNew();
pRS->PutCollect("savetime",_variant_t(datatime));
pRS->PutCollect("testpoint",testpoint);

CFile datafile;
if(0 == datafile.Open(File1,CFile::modeRead))
return false;

BYTE* pbuf;
long nLength = datafile.GetLength();
pbuf = new BYTE[nLength+2];
if(pbuf == NULL)
return false; datafile.Read(pbuf,nLength);

pRS->PutCollect("datasize",nLength);

BYTE *pBufEx;
pBufEx = pbuf;
//build a SAFFERRAY
SAFEARRAY* psa;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = nLength;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
for (long i = 0; i < nLength; i++)
SafeArrayPutElement (psa, &i, pBufEx++);
VARIANT varBLOB;
varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa;

pRS->Fields->GetItem("data")->AppendChunk(varBLOB);
pRS->Update();
}
catch (_com_error &e)
{
AfxMessageBox (e.Description());
return false;
}
pRS->Close();
pRS.Release();
pConn->Close();
pConn.Release();
::CoUninitialize();

Viper_sh 2001-12-06
  • 打赏
  • 举报
回复
如果在大型数据库中,调用储存过程很方便的,试试吧
wyzegg 2001-12-06
  • 打赏
  • 举报
回复
是否访问的是ORACLE数据库,如果是就是有这个问题,使用SQL语句好啦
bobofu 2001-12-06
  • 打赏
  • 举报
回复
把代码贴出来,

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧