UniDAC 是 Delphi 通用數據訪問組件,連接 MySQL 時常遇編碼、語法、元數據同步問題。本文總結四大實戰避坑方案。
排查:MySQL 字符集均為 utf8,修改 character_set_connection 無效,HeidiSQL 轉碼無效。
根因:**UniDAC 連接組件默認 Charset 非 UTF-8**。
解決:雙擊 TUniConnection → Options → Charset = GB2312(或 utf8 視驅動版本)。




設置後 cxGrid 中文正常顯示。
現象:
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';
-- 判斷 NULL WHERE SheBeiBianHao IS NULL -- 設置 NULL UPDATE tb_zichan SET JieChuRenDianHua=NULL WHERE SheBeiBianHao='20050408';
注意:= NULL 永遠為 FALSE,必須用 IS NULL / IS NOT NULL。
現象:數據庫修改列類型後,UniDAC TUniTable 打開報錯。
解決:雙擊 TUniTable → Fields 編輯器 → **刪除所有字段** → 重新連接數據庫 → **Add all fields** 重新獲取元數據。