导航:
论坛 -> 数据库专区
斑竹:liumazi,waterstone
作者:
2008/8/28 10:51:56
标题:
关于SQL语句中有汉字不能运行的问题
浏览:2364
加入我的收藏
楼主:
数据库采用MySQL5 用Delphi7编写的小程序 如下 self.Query1.Close; self.Query1.SQL.Clear; s :='select * from gongxiang where About="hello" order by ID DESC'; self.Query1.SQL.add(s); self.Query1.Open; 上面代码执行没有问题 但是包括汉字的时候如 self.Query1.Close; self.Query1.SQL.Clear; s :='select * from gongxiang where About="你好" order by ID DESC'; self.Query1.SQL.add(s); self.Query1.Open; 则出错 错误信息为 General SQL error (utff_general_ci,Coercible) for operation '=''.Process stopped,Use Step or run to continue.
----------------------------------------------
-
作者:
2008/8/28 10:54:07
1楼:
语句应该没有问题 我把该语句复制到MySQL控制台里去执行,没有问题
----------------------------------------------
-
作者:
2008/8/28 13:50:03
2楼:
改一下数据库的默认语言格式
----------------------------------------------
-
作者:
2008/8/28 14:59:10
3楼:
alter table gongxiang CHARACTER SET=gb2312; 改变语言后,问题还是没有解决
----------------------------------------------
-
作者:
chuzx (ant)
★☆☆☆☆
-
盒子活跃会员
2008/8/28 15:16:14
4楼:
用传参的方式试试吧 parambyname('v_about').assstring:='你好';
----------------------------------------------
-
作者:
2008/8/28 15:51:46
5楼:
非常感谢chuzx 此方法可行, 但能否告诉我是什么原因吗?
----------------------------------------------
-
作者:
2008/8/28 16:01:22
6楼:
在三个论坛同时提问 盒子最快最好,
----------------------------------------------
-
作者:
2008/8/28 20:20:27
7楼:
Params方式传递参数,可避免一些非法字符或单引号。
----------------------------------------------
不喧哗 自有声 心静 思远 志行千里
作者:
2008/8/28 21:05:28
8楼:
把双引号换成两个单引号就可以了
----------------------------------------------
winsock api,通讯,多线程,VCL,Java
作者:
2008/8/29 15:03:57
9楼:
把双引号换成单引号,我试验了,不可行
----------------------------------------------
-
作者:
2008/8/31 9:04:02
10楼:
我猜测很有可能是Delphi7不完全支持Unicode
----------------------------------------------
-
作者:
2008/9/8 13:55:29
11楼:
引号前面加个N试试看
----------------------------------------------
-
作者:
zxm (认真学习)
★☆☆☆☆
-
盒子活跃会员
2008/9/8 23:14:57
12楼:
10楼的乱说,,, 我猜测很有可能是Delphi7不完全支持Unicode 是他自已的语句格式有问题... 应该用单引号...
----------------------------------------------
好好学习,天天向上! →我: ●-(不许动!) ● ←:你: █┳ ┗█┛ ┏┓ ┛┗
作者:
2008/9/9 8:15:42
13楼:
在我的记忆中MySQL5对于字符串是非常宽松的,单引号和双引号都可以, 早上测试了一下,我的记忆是没有问题的,
----------------------------------------------
-
作者:
2008/9/9 8:34:24
14楼:
客户端程序连接数据库时set names 'GBK' 服务端MySQL配置库为utf8_general_ci 完全支持中文查询
----------------------------------------------
-
作者:
2008/9/9 8:35:37
14楼:
为了不误人,早上再试验了一下 procedure TForm1.Button1Click(Sender: TObject); begin self.Query1.Close; self.Query1.SQL.Clear ; self.Query1.SQL.Add('select * from gongxiang where about like ''%目录%'';'); self.Edit1.Text := 'select * from gongxiang where about like ''%目录%'';'; self.Query1.Open; end; 以上语句提示的错误与上面相同 WinXp+D7+MySQL5 别的数据库可不可行我不知道,我没有试验
----------------------------------------------
-
作者:
2008/9/9 8:37:41
15楼:
14楼的,我没有完全明白你的意思, 我的客户端和服务器暂时在一台机器上, 关于 客户端程序连接数据库时set names 'GBK' 应该怎么写?
----------------------------------------------
-
作者:
2008/9/9 8:40:27
16楼:
是不是D7的问题我还不肯定,D2009出来了,号称完全支持Unicode,到时候在试验一下相同的语句,就完全清楚了,
----------------------------------------------
-
作者:
dejoy (FireFox)
★☆☆☆☆
-
普通会员
2008/9/9 8:54:22
17楼:
说了半天,楼主还是没说关键是用的什么数据库引擎访问MYSQL5的?
----------------------------------------------
-
作者:
2008/9/9 14:26:09
18楼:
WinXP+D7+BDE+MySQL5 虽然问题解决了,争辩越来越有意思了,能知道问题到底出在哪里
----------------------------------------------
-
作者:
2008/9/9 16:40:37
19楼:
WinXP+D7+BDE+MyODBC5+MySQL5 虽然问题解决了,争辩越来越有意思了,能知道问题到底出在哪里
----------------------------------------------
-
作者:
2008/9/9 17:41:16
20楼:
你们有没有发现有两个14楼,哈哈
----------------------------------------------
-
作者:
2008/9/9 20:01:48
21楼:
liuzemin: 问题出在字符集上 服务器设置:MySQL 字符集: UTF-8 Unicode (utf8) MySQL 连接校对 UTF8_general_ci C/S 客户端查询时先query("SET NAMES 'GBK'") 然后你再query('select * from gongxiang where About="你好" order by ID DESC') B/S 客户端查询时先query("SET NAMES 'UTF8'") 然后你再query('select * from gongxiang where About="你好" order by ID DESC') 数据库引擎无关,测试服务器是不是本机无关
----------------------------------------------
-
作者:
2008/9/10 8:15:23
22楼:
呵呵,MyODBC5不支持SET NAMES 'GBK' 还是非常感谢你热心的回复
----------------------------------------------
-
作者:
azsd (曾半仙)
★☆☆☆☆
-
盒子活跃会员
2008/9/10 9:23:42
23楼:
用键盘1左边的"诡异单引号"扩`GBK`试试看.
----------------------------------------------
-
作者:
2008/9/10 10:57:04
24楼:
配置myodbc时,第二标签项有一个character设置,里面填GBK delphi没试过,不过ACCESS连接成功,可正常管理mysql mysql-connector-odbc-3.51.26-win32.msi
----------------------------------------------
-
作者:
2008/9/12 8:50:59
25楼:
经过测试 WinXP+D7+zeosDBO+MyODBC5+MySQL5 完全能通过 因此可以肯定问题出在BDE
----------------------------------------------
-
作者:
2008/9/13 11:27:59
26楼:
这问题也未必是 BDE,我用 XP+D7+MySQL5+SQLDirect 好像也不能正确使用中文
----------------------------------------------
-
作者:
2008/9/13 11:28:19
27楼:
估计还是 Delphi 的 Unicode 支持问题
----------------------------------------------
-
作者:
2008/9/18 8:01:19
28楼:
WinXP+D2009+BDE+MyODBC5+MySQL5 问题依旧,
----------------------------------------------
-
作者:
2008/9/18 12:01:55
29楼:
到底是什么原因呢???
----------------------------------------------
-
作者:
2008/9/18 15:52:29
30楼:
如果D2009真的像codegear说的那样完全支持Unicode,则BDE的嫌疑很大, 以上纯属个人观点
----------------------------------------------
-
作者:
2008/9/18 15:56:08
31楼:
再反复看了一下所有的回复,认为21楼的观点比较可信 21楼: 问题出在字符集上 服务器设置:MySQL 字符集: UTF-8 Unicode (utf8) MySQL 连接校对 UTF8_general_ci C/S 客户端查询时先query("SET NAMES 'GBK'") 然后你再query('select * from gongxiang where About="你好" order by ID DESC') B/S 客户端查询时先query("SET NAMES 'UTF8'") 然后你再query('select * from gongxiang where About="你好" order by ID DESC') 数据库引擎无关,测试服务器是不是本机无关
----------------------------------------------
-