首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Delphi UniDAC 連接 MySQL 避坑指南:中文亂碼、SQL 語法、空值判斷、字段不同步

     編輯:MySQL 綜合教學

Delphi UniDAC 連接 MySQL 避坑指南:中文亂碼、SQL 語法、空值判斷、字段不同步

UniDAC 是 Delphi 通用數據訪問組件,連接 MySQL 時常遇編碼、語法、元數據同步問題。本文總結四大實戰避坑方案。

1. cxGrid 顯示中文亂碼

排查:MySQL 字符集均為 utf8,修改 character_set_connection 無效,HeidiSQL 轉碼無效。
根因:**UniDAC 連接組件默認 Charset 非 UTF-8**。

解決:雙擊 TUniConnection → Options → Charset = GB2312(或 utf8 視驅動版本)。

MySQL 變量

HeidiSQL

UniConnection

Charset 設置

設置後 cxGrid 中文正常顯示。

2. UniDAC 執行 MySQL SQL 語法報錯

現象:

UPDATE tb_zichan SET Logliushui="20150318", JieChuRen="李二狗" ... WHERE SheBeiBianHao="20050408";
-- 報錯:Unknown column 'rownum' / Unknown column '2005'

根因:**UniDAC 執行 MySQL 時,字符串字面值必須用單引號**,雙引號被視為標識符(列名/表名)。

正確寫法:

UPDATE tb_zichan SET Logliushui='20150318', JieChuRen='李二狗' ... WHERE SheBeiBianHao='20050408';

3. 判斷字段為 NULL / 設置字段為 NULL

-- 判斷 NULL
WHERE SheBeiBianHao IS NULL
-- 設置 NULL
UPDATE tb_zichan SET JieChuRenDianHua=NULL WHERE SheBeiBianHao='20050408';

注意:= NULL 永遠為 FALSE,必須用 IS NULL / IS NOT NULL。

4. 表字段類型變更後 UniDAC 報「字段不匹配」

現象:數據庫修改列類型後,UniDAC TUniTable 打開報錯。
解決:雙擊 TUniTable → Fields 編輯器 → **刪除所有字段** → 重新連接數據庫 → **Add all fields** 重新獲取元數據。

總結

  • 連接組件 Charset=GB2312/utf8 解決中文顯示。
  • SQL 字符串 只用單引號,雙引號視為標識符。
  • NULL 判斷用 IS NULL,賦值直接 =NULL。
  • 數據庫結構變更後 刪除 Fields 重新添加 同步元數據。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved