操作_ConnectionPtr的Execute函数返回的_RecordsetPtr出现问题

飞檐走壁 2011-02-10 04:13:40
我用的是vc6.0访问sqlserver 2005


1 当我直接用_RecordsetPtr的open方法打开记录集后可以对记录集进行修改操作 代码如下:



_RecordsetPtr rs;
...
...
try()
{
rs->Open(sqlstring,
_variant_t((IDispatch*)pApp->m_pConnection),
ADODB::adOpenStatic,ADODB::adLockOptimistic,ADODB::adCmdText);
rs->Fields->Item["UserId"]->Value = (_variant_t)m_newedit;
rs->Update();
}
catch(_com_error &e)
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
CString sError;
sError.Format( "Source : %s \n Description : %s\n",
(LPCSTR)bstrSource,(LPCSTR)bstrDescription);
AfxMessageBox(sError);
}


结果成功修改了数据

2 当我直接用_ConnectionPtr的Execute方法获得记录集后就不能对记录集进行修改操作 代码如下:


_ConnectionPtr rs_conn;
_RecordsetPtr rs;
...
...
try()
{
rs=rs_conn->Execute(_bstr_t(sqlstring),0,0);
rs->Fields->Item["UserId"]->Value = (_variant_t)m_newedit;
rs->Update();
}
catch(_com_error &e)
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
CString sError;
sError.Format( "Source : %s \n Description : %s\n",
(LPCSTR)bstrSource,(LPCSTR)bstrDescription);
AfxMessageBox(sError);
}




结果出现错误:
当前记录集不支持更新。这可能是提供程序的限制 也可能是选定锁定类型的限制。Unknown error 0x800A0CB3
这是怎么回事,各位好心人请帮帮忙
...全文
342 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞檐走壁 2011-02-11
  • 打赏
  • 举报
回复
了解到了是不能直接修改的,ok就这样了结了吧。
飞檐走壁 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dawugui 的回复:]
引用 3 楼 baihengxiang 的回复:
如果不能修改,那么就不能用AppendChunk方法修改图片等大文件数据了。

C/C++ code

rs->Fields->Item["UserImage"]->AppendChunk(pvList);



通过设置某些参数也不行吗,比如Execute的参数或创建连接的时候

一般对图片数据是进行读入读出,这种修改的需求……
[/Quote]


能否多指点一下,谢谢了。
dawugui 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 baihengxiang 的回复:]
如果不能修改,那么就不能用AppendChunk方法修改图片等大文件数据了。

C/C++ code

rs->Fields->Item["UserImage"]->AppendChunk(pvList);



通过设置某些参数也不行吗,比如Execute的参数或创建连接的时候
[/Quote]
一般对图片数据是进行读入读出,这种修改的需求还是第一次听说.
飞檐走壁 2011-02-10
  • 打赏
  • 举报
回复
如果不能修改,那么就不能用AppendChunk方法修改图片等大文件数据了。

rs->Fields->Item["UserImage"]->AppendChunk(pvList);


通过设置某些参数也不行吗,比如Execute的参数或创建连接的时候

AcHerat 2011-02-10
  • 打赏
  • 举报
回复

--EXECUTE相当于查询出来的结果集,并不是表,不能直接修改!
华夏小卒 2011-02-10
  • 打赏
  • 举报
回复
execute 类似select 结果集,这个没法直接修改

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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