紧急求救,更新数据库问题!!!!!!

violetyyy 2001-08-22 03:51:35
我通过这样更新数据库,不知对否:
CString mysql;
CString str;
str.Format("%d",theTree.GetItemData(m_htiDrag));
mysql.Format("select * from Pub_Department where ID='" + str+"'");

try
{
_RecordsetPtr pRs;
pRs.CreateInstance(__uuidof(Recordset));
_variant_t vRowsAffected;
if (pRs->State==adStateOpen)
pRs->Close();
pRs->Open((_bstr_t)(LPCTSTR)mysql,
m_Conn.GetInterfacePtr(),
adOpenForwardOnly,
adLockReadOnly,-1); //先得到一个记录集,这一不是对的,仅得
int i=pRs->RecordCount; 到一条纪录,id是主键
_variant_t vName,vValue;
vName.SetString("PID");
DWORD dw=theTree.GetItemData(m_htiDrop);
_variant_t varDes;
vValue.vt = VT_UINT;
vValue.uintVal = dw;
pRs->Update(vName,vValue); //再更新数据库,到这一步就发生异常。

}catch(...)
{
MessageBox("数据库更新失败");
return;
}

...全文
84 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiezhsh 2001-08-22
  • 打赏
  • 举报
回复
要是对,加分哦!!!
xiezhsh 2001-08-22
  • 打赏
  • 举报
回复
补充:要想更新,需修改.用法如下:
   m_pRs->Open((_bstr_t)(LPCTSTR)mysql,m_Conn.GetInterfacePtr(),
adOpenDynamic, adLockOptimistic, adCmdText);
xiezhsh 2001-08-22
  • 打赏
  • 举报
回复
参数有错:adLockReadOnly是只读,所以不能更新.
其实,更新的方式最好采用:
......
m_pField=m_pFields->Item["字段名"];
m_pField->Value=(_variant_t)值;
.....
pRs->Update();

或用_CommandPtr的sql语句执行
iamxia 2001-08-22
  • 打赏
  • 举报
回复
看看你的数据库打开方式是否是只读
蒋晟 2001-08-22
  • 打赏
  • 举报
回复
看看数据是否违反记录的有效性规则
或者数据源是否支持update

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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