首页 新闻 会员 周边

紧急求助: VC++ADO调用数据库UPdate 的问题

0
[已解决问题] 解决于 2010-09-03 13:17

出问题的代码段

while(!pRst->rsEOF)

{

_variant_t vColumn,vValue;
  vColumn.SetString("Categorization");
  vValue.SetString(writeInfo.c_str());
  pRst->Update(vColumn,vValue);、//这里报错
  writeInfo="";
  belongAutomation=0;
  belongComputer=0;
  pRst->MoveNext();

}

错误类型:nhandled exception at 0x7c812afb in test.exe: Microsoft C++ exception: _com_error at memory location 0x0012f8f0..

转到文件:

inline HRESULT Recordset15::Update ( const _variant_t & Fields, const _variant_t & Values ) {
    HRESULT _hr = raw_Update(Fields, Values);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _hr;

数据库连接等语句

CoInitialize(NULL);
 _ConnectionPtr pConn(__uuidof(Connection));
 _RecordsetPtr pRst(__uuidof(Recordset));
 char * selectsql="select ArticleId,ClassifyNum,Categorization from Article where ArticleId between 1 and 10 order by ArticleId";
 pConn->ConnectionString="Provider=SQLOLEDB.1;Password=xxx;Persist Security Info=True; User ID=sa;Initial Catalog=ArticleCollection";
 pConn->Open("","","",adConnectUnspecified);
 pRst=pConn->Execute(selectsql,NULL,adCmdText);

问题补充: categorization 字段 数据类型为char 300
finallyly的主页 finallyly | 初学一级 | 园豆:100
提问于:2010-09-03 10:58
< >
分享
最佳答案
0

就是数据类型不对吧!不能用 vValue.SetString.

我测试了下,也没问题.

vValue.SetString("465465qwer123");

 

string writeInfo="baby"; 
vValue.SetString(writeInfo.c_str());

我这样用也没有错啊!

Launcher | 高人七级 |园豆:45045 | 2010-09-03 12:53
谢谢你的回复。我已经找到问题出现在哪了。上面指向结果集的指针是通过connection调用execute产生的。 我对初始化做了如下修改: pRst.CreateInstance("ADODB.Recordset"); pRst->Open(selectsql, _variant_t((IDispatch*)pConn,true), adOpenStatic, adLockOptimistic, adCmdText); 就没有了任何问题,我觉得先前的报错可能是因为没有实例化结果集。
finallyly | 园豆:100 (初学一级) | 2010-09-03 13:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册