delphi+ODBC+mysql+ado的赋值问题

秋天之落叶 2024-01-25 11:01:03

第一次接触delphi+ODBC+mysql+ado,为什么和delphi+mssql+ado不一样?
ado.sql.Add('update 登录表 set 状态=:状态');
ado.Parameters.ParamValues['状态'] := '在线';
ado.execsql;

竟然不对,必须要写成:

ado.sql.Add('update 登录表 set 状态='+quotedstr('在线'));

才可以。以上语句在delphi+mssql+ado中正常,请教为什么呢?

...全文
320 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

嘿嘿,完全搞定,完美总结一下,以下在win7+D10.3.2+mysql5.3+ODBC+ado中验证通过:
1、mysql端一定要使用gbk,服务器、客户端、数据库、数据表、my.ini中设置一致。
2、ODBC使用unicode驱动,并设置misc中的read option from my.cnf为选中状态(重要)
3、D10是32位的不要妄想连接ODBC64位的驱动,数据库、应用软件、驱动、系统必须一致
结果:字段和值显示汉字正常,查询、修改操作正常。

  • 打赏
  • 举报
回复

白高兴了,ansi可以修改,但汉字字段名显示还是乱码,fieldbyname取不到字段值,我勒个去的。
继续研究。

  • 打赏
  • 举报
回复

搞定了,是我自做聪明了,无意中又试了试ODBC使用ansi驱动,成功,欧耶。
开始mysql的字符集时latin1,我使用ansi驱动汉字乱码,使用unicode后正常显示,光测试客户端的字符集了,一直没有测试ansi驱动,偶然一试,问题解决。

戏言zare 01-25
  • 打赏
  • 举报
回复

ODBC需要驱动,麻烦的很,更麻烦的是用ODBC连Oracle,中文乱码的问题搞了我半个月,非字符集问题

  • 举报
回复
@戏言zare 使用的mysql官网提供的两种驱动,ansi和unicode两种驱动,直接语句查询插入修改都没有问题,就是delphi中修改赋值不行,估计insert也不行。你的问题总结分享一下,我碰碰运气
戏言zare 01-25
  • 举报
回复
@秋天之落叶 https://blog.csdn.net/qq_37033647/article/details/109254983 针对Oracle的,不知道能不能解决mysql
  • 举报
回复
@戏言zare 已经解决,感谢回复🙏
  • 打赏
  • 举报
回复

研究了很久,总结一下问题:
1、navicat中用语句 update 表 set 中文字段名=‘中文’ 没有问题
2、表的中文字段修改为英文字段,delphi中update赋值中文没有问题
3、delphi中select where中用中文字段赋值中文变量没有问题
4、ado.sql.Add('update 登录表 set 状态='+quotedstr('在线'));时也没有问题
仅在表中是中文字段时,delphi用update语句赋值时出现错误
目前懵逼中,请高手解惑。

daigua1987 01-25
  • 举报
回复
@秋天之落叶 把ODBC换了用FireDAC
daigua1987 01-25
  • 举报
回复
@daigua1987 ODBC+ADO 是需要连接驱动的,比较麻烦,换FireDAC不需要安装驱动
  • 举报
回复
@daigua1987 大量的代码是用的ADO,这次是要换成mysql,如果使用FD,那要重新调整语句的,老惨了
5条回复
  • 打赏
  • 举报
回复

不过,有趣的是,我的select语句使用where 字段名=:变量名,后续赋值
ado.Parameters.ParamValues['字段名'] := '变量';
就没有任何问题。
奇怪。

  • 打赏
  • 举报
回复

网上查了所有的可能,还是字符集的问题,把所有的设置修改为utf8、utf8mb4,均不成功,真是没招了,哈

  • 打赏
  • 举报
回复

mysql已经全部配置为 utf8 编码方式,查询显示正常,ODBC也是使用unicode的驱动,可以正确识别中文。

  • 打赏
  • 举报
回复

错误显示:incorrect string value:'\xD4\xDA\xCF\xDF' for column '状态' at row 128.

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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