Delphi中Undac控件连接MYSQL数据库问题总结

1、数据库挂到cxgrid上,中文显示不正确

我调试了好长时间,怀疑是编码问题,mysql的编码方式我都试过了,都不可以。
解决问题过程:
(1)、在dos系统下进入mysql数据库输入show variables like ‘char%’;
技术分享
我考虑可能是character_set_connection的编码有问题,于是开始设置它的编码方式,但是,这个编码方式重新启动数据库还是原来的编码方式。当然可以mysql数据库配置文件中设置,但是不是这个原因。
(2)、考虑到可能是数据库字符集编码方式问题,采用HeidiSQL软件转换编码方式。
技术分享
其实mysql通常都是用utf8编码,不用改变,所以失败了。
(3)、换个角度,如果不是mysql的问题就是Undac控件的问题了,到底是什么控件呢?当然是从连接数据库控件开始找了。
技术分享
双击它,技术分享
选择Options,里面第一项Charset设置成GB2312,这样就搞定了。
cxgrid 汉字显示解决了。

2、使用Undac执行mysql数据库语句

下面这句话用Undac控件执行,会报语法错误。
错误类型1:Unknown column ‘rownum’ in ‘where clause’
错误类型2:#42S22Unknown column ‘2005’

update tb_zichan set Logliushui="20150318",JieChuRen="李二狗",JieChuRenDianHua="18791983947",JieChuWeiZhi="537",YuGuiHuanShiJian="2015-03-18",JingShouRen="糖糖",JieChuShiJian="2015-04-28 18:33:42",JieChuRenEMail="",JieChuZhuangTai="借出" where SheBeiBianHao="20050408"。

尝试了好多次,最后发现原来Undac控件执行mysql语句,字符串字段不能用双引号,只能用单引号。例如下面语句。

UPDATE tb_zichan SET Logliushui =‘20150318‘,JieChuRen =‘人‘,JieChuRenDianHua =‘18791983947‘,JieChuWeiZhi =‘537‘,YuGuiHuanShiJian =‘2015-03-18‘,JingShouRen =‘dhfjh‘,JieChuShiJian =‘2015-04-28 18:33:42‘,JieChuRenEMail =‘‘,JieChuZhuangTai =‘hfudgf‘ where SheBeiBianHao =‘20050408‘

3、判断mysql数据库表中的数据是否为空,或设置某个字段数据为空如下面语句

UPDATE tb_zichan SET Logliushui =‘20150318‘,JieChuRen =‘人‘,JieChuRenDianHua =null,JieChuWeiZhi =‘537‘,YuGuiHuanShiJian =‘2015-03-18‘,JingShouRen =‘dhfjh‘,JieChuShiJian =‘2015-04-28 18:33:42‘,JieChuRenEMail =‘‘,JieChuZhuangTai =‘hfudgf‘ where SheBeiBianHao is null

4、如果遇到表中的某个字段类型不匹配错误

前提是使用数据库时改变了数据库中的字段类型时,运行Undac中的表会报表中字段与数据库字段不匹配错误。
通常将Undac中的table中的fields双击打开,删除里面的所有字段,然后连接数据库重新添加所有字段就可以了。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。