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双击打开,删除里面的所有字段,然后连接数据库重新添加所有字段就可以了。

时间: 2024-10-26 09:13:39

Delphi中Undac控件连接MYSQL数据库问题总结的相关文章

DELPHI 使用dbexpress控件连接MySQL数据库方法

1. 在窗体上放置4个控件: SQLConnection1,SimpleDataSet1,DataSource1,DBGrid (注意: 如果 出现"Operation not allowed on unidirectional dataset"错误提示原因如下:). 在网上查到一篇文章如下: 错误描述:当使用dbExpress控件操作数据库时,用到sqlconnection1.sqlquery1.datasource1和dbgrid1.按顺序连接,当将dbgrid的DataSourc

jmeter中通过jdbc方式连接mysql数据库的配置参考

jmeter中通过jdbc方式连接mysql数据库的配置参考: Database URL=jdbc:mysql://ip:port/dbname?useUnicode=true&characterEncoding=UTF-8 JDBC Driver class=com.mysql.jdbc.Driver jmeter中配置截图:

Delphi中WebBrowser控件打开部分网站报"Invalid floating point operation”解决

Delphi中WebBrowser控件打开部分网站报"Invalid floating point operation”解决 EmbeddedWBWebBrowserDelphi 最近用EmbeddedWB控件做浏览器相关应用的时候,发现有些网页只要一打开就一定会蹦出一个“Invalid floating point operation”异常(关掉异常对话框以后,浏览器无响应),而程序仅仅是一句 WebBrowser1.Navigate(Edit1.Text);貌似很多含有Silverlight

VS .net 如何利用VS自带的控件连接到数据库

最近在做算是学生时代相对大一点的项目,至少是我本人活到现在做的最大的了,一切都是从0开始学,每天解决几个小问题,我坚信一定可以做出来,可惜团队里的人都不想敲代码,不然有点气氛更好了,搞得自己跟苦行僧似的 1.在 Microsoft Visual Studio 中打开一个网站,添加一个 ASP.NET 页("Web 窗体"),并切换到"设计"视图. 2.从工具箱的"数据"组中,将 SqlDataSource 控件拖动到页面上. 3.在"S

在delphi中ocx控件的安装

第一步: 使用过Activex的人都知道,Activex不注册是不能够被系统识别和使用的,一般安装程序都会自动地把它所使用的Activex控件注册,但如果你拿到的一个控件需要手动注册怎么办呢?如果修改注册表那就太麻烦了,在Windows的system文件夹下有一个regsvr32.exe的程序,它就是Windows自带的Activex注册和反注册工具.它的用法为: regsver32详解 regsvr32 [/s] [/n] [/i(:cmdline)] dllname 其中dllname为ac

Delphi7中不用控件连接sqlite

DELPHI 7 没有办法使用lib文件,这就有点麻烦,但是咱们也没有必要一个一个Query,那样太痛苦了.我当时就好痛苦.咱们可以借助第三方的包装类,有一些是收费的,但是也有一些免费的,具体的信息大家请查看下面的地址 http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers 我这里使用的是sqlite simple delphi 这是一个完全免费的包装类,大家可以到它的官方网站下载,http://www.itwriting.com/sqlitesi

[转]Delphi 中 image 控件加载bmp、JPG、GIF、PNG等图片的办法

procedure TForm1.Button1Click(Sender: TObject); var jpg: TJPEGImage; // 要use Jpeg单元 begin // 显示jpg大图片的方式 jpg := TJPEGImage.Create; jpg.LoadFromFile(getcurrentdir() + '\pic.jpg'); Image1.Picture.Bitmap.Assign(jpg); // 因为 img 控件是基于bmp的 jpg.Free; end; p

怎样在delphi中实现控件和窗体的拖拽

下面这2种方法都能实现对控件和窗体的拖拽 方法1 procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; SendMessage(Handle,WM_NCLBUTTONDOWN,HTCAPTION,0); end; 方法2 public { public declarations } posX, p

Delphi中基本控件之SaveDialog控件的使用总结

首先向Form窗体拖一个SaveDialog控件,Name属性改为:dlgSave,然后添加一个按钮,Caption属性改为:浏览,Name属性改为:btnBrowse. 然后双击浏览按钮添加如下代码: procedure Tfoffertool.btnbrowseClick(Sender: TObject); var filePath :string; begin dlgSave.Title := '保存文件路径'; //设置浏览对话框标题名 dlgSave.Filter:= '文本文件(*.