mysql ado操作问题

Liang4 2010-11-17 02:35:36
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;
}
...全文
91 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Liang4 2010-11-17
  • 打赏
  • 举报
回复
数据库采用utf8
估计是表结构出问题了,我再研究研究啊,谢谢大家了~
WWWWA 2010-11-17
  • 打赏
  • 举报
回复
估计是字符集不统一
show variables like 'char%';
Liang4 2010-11-17
  • 打赏
  • 举报
回复
错了错了,测试的表里中文也没问题~~~

那应该是表出现问题了~~~~
iihero_ 2010-11-17
  • 打赏
  • 举报
回复
获取连接以后,执行set names 'gbk'
数据库服务器端也采用gbk或者utf8字符集。

这样似乎有救。不过,不知道你的数据库采用的什么字符集。
show variables like 'char%'

版上有N多关于字符集方面的帖子,往前翻翻看
Liang4 2010-11-17
  • 打赏
  • 举报
回复
郁闷了,英文字段可以修改,中文不可以。。找到问题所在了

但是添加新纪录,中英文都可以

编码问题,但是不知道怎么解决~~~
谁能提示一下?
Liang4 2010-11-17
  • 打赏
  • 举报
回复
select * from sys_dict \
where 类型='提醒类型' and 代码='2'";
这个语句是没问题的
得到的pRes有一条记录
_variant_t var = pRst->GetCollect("名称");
可以返回数据库里的值

服务器就在我边上。。。我这里2台机器,我直接查的mysql数据库,知道没有修改成功。。。
没有出错提示,update都是成功的,
我的mysql是uft8,中文字段,我正在试英文字段会不会有这个问题
iihero_ 2010-11-17
  • 打赏
  • 举报
回复
强行 提交试试,最好在数据库后端看看有没有修改的效果。
WWWWA 2010-11-17
  • 打赏
  • 举报
回复
select * from sys_dict \
where 类型='提醒类型' and 代码='2'";

是否有结果
ACMAIN_CHM 2010-11-17
  • 打赏
  • 举报
回复
[Quote]update 语句是没问题的[/Quote]

[Quote]添加一条新纪录,利用
pRes->addnew
pRes->putcollect
pRes->update()
这样都是没问题的
[/Quote]

[Quote](我先select*出来一条记录到pRes,然后给pRes->putcollect进去,然后update()
update()返回都是成功值,但是数据库就是没修改);[/Quote]
你的SELECT语句是什么?然后你是如何判断没有修改的?

WWWWA 2010-11-17
  • 打赏
  • 举报
回复
检查一下表设置,是否有约束,有无出错提示
Liang4 2010-11-17
  • 打赏
  • 举报
回复
mysql 是5.0的
我调用的是服务器上的数据库
update 语句是没问题的

添加一条新纪录,利用
pRes->addnew
pRes->putcollect
pRes->update()
这样都是没问题的

就是修改有问题
(我先select*出来一条记录到pRes,然后给pRes->putcollect进去,然后update()
update()返回都是成功值,但是数据库就是没修改);
wwwwb 2010-11-17
  • 打赏
  • 举报
回复
MYSQL什么版本?
直接用UPDATE SQL语句替换,结果如何
Liang4 2010-11-17
  • 打赏
  • 举报
回复
我对数据库事务机制不太了解~
但是我没有BeginTrans,
也不用提交了吧?

我在操作access时,这个是没问题的,就是mysql出现的这个问题
ACMAIN_CHM 2010-11-17
  • 打赏
  • 举报
回复
会不会是事务没有提交的原因?

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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