ado修改数据时,Recordser update()成功,但是并没有真正修改。奇怪~_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
pConn->ConnectionString="DRIVER={MySQL ODBC 5.1 Driver}; \
Data Source = trm_base"; try
{
HRESULT hr = pConn->Open("","","",adConnectUnspecified);
CString strSource = "select * from sys_dict \
where 类型='提醒类型' and 代码='2'";
HRESULT hr2 = pRst->Open(_variant_t(strSource),
_variant_t(pConn,true),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch (_com_error& err)
{
CString s;
s.Format("%s",err.Description());
}
while (!pRst->ADOEOF)
{
_variant_t varIndex("名称");
_variant_t varValue("3");
pRst->PutCollect(varIndex, varValue);
HRESULT hr = pRst->Update();//hr返回0值,但是update并未起作用,数据库未被更改
return;
}
_RecordsetPtr pRst(__uuidof(Recordset));
pConn->ConnectionString="DRIVER={MySQL ODBC 5.1 Driver}; \
Data Source = trm_base"; try
{
HRESULT hr = pConn->Open("","","",adConnectUnspecified);
CString strSource = "select * from sys_dict \
where 类型='提醒类型' and 代码='2'";
HRESULT hr2 = pRst->Open(_variant_t(strSource),
_variant_t(pConn,true),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch (_com_error& err)
{
CString s;
s.Format("%s",err.Description());
}
while (!pRst->ADOEOF)
{
_variant_t varIndex("名称");
_variant_t varValue("3");
pRst->PutCollect(varIndex, varValue);
HRESULT hr = pRst->Update();//hr返回0值,但是update并未起作用,数据库未被更改
return;
}
但是我没有BeginTrans,
也不用提交了吧?我在操作access时,这个是没问题的,就是mysql出现的这个问题
直接用UPDATE SQL语句替换,结果如何
我调用的是服务器上的数据库
update 语句是没问题的添加一条新纪录,利用
pRes->addnew
pRes->putcollect
pRes->update()
这样都是没问题的就是修改有问题
(我先select*出来一条记录到pRes,然后给pRes->putcollect进去,然后update()
update()返回都是成功值,但是数据库就是没修改);
where 类型='提醒类型' and 代码='2'";是否有结果
where 类型='提醒类型' and 代码='2'";
这个语句是没问题的
得到的pRes有一条记录
_variant_t var = pRst->GetCollect("名称");
可以返回数据库里的值服务器就在我边上我这里2台机器,我直接查的mysql数据库,知道没有修改成功
没有出错提示,update都是成功的,
我的mysql是uft8,中文字段,我正在试英文字段会不会有这个问题
数据库服务器端也采用gbk或者utf8字符集。这样似乎有救。不过,不知道你的数据库采用的什么字符集。
show variables like 'char%'版上有N多关于字符集方面的帖子,往前翻翻看
show variables like 'char%';
估计是表结构出问题了,我再研究研究啊,谢谢大家了~