本文就本人遇到的問題進行講解mysql
1.經過jdbc直連方式,鏈接Mysql數據庫,從程序向數據庫中寫入數據出現的亂碼解決方案。sql
當經過程序向Student表中寫入一條數據時,寫入數據庫的內容會產生亂碼。數據庫
以下圖this
解決方案:編碼
1。建立數據庫的時候:url
CREATE DATABASE `Db`
CHARACTER SET 'utf8 '
COLLATE 'utf8_general_ci '; spa
2.建表的時候: code
CREATE TABLE `TableA` (
`ID` varchar(40) NOT NULL default ' ',
`UserID` varchar(40) NOT NULL default ' ', )
ENGINE=InnoDB DEFAULT CHARSET=utf8; server
可是本人感受關係不是很大,不過能夠做爲一種嘗試手段。blog
3.該方案行之有效,就是修改Mysql安裝目錄的配置文件
須要修改my.ini中兩個位置的編碼,
第一處
第二處:
設置後,經過命令重啓服務
最終問題解決。
2.若是是經過jdbc從mysql數據庫讀取數據出現亂碼,可是數據庫中數據自己並無出現亂碼,那麼可使用在url中加參數的解決方案。
Url寫法以下:
jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8
3.若是將url中的localhost換成IP地址,出現以下問題:
報錯:1130-host ... is not allowed to connect to this MySql server
解決方法:
1。 改表法。
多是你的賬號不容許從遠程登錄,只能在localhost。這個時候只要在localhost的那臺電腦,登入mysql後,更改 "mysql" 數據庫裏的 "user" 表裏的 "host" 項,從"localhost"改稱"%"
mysql -u root -pvmwaremysql>use mysql;
mysql>update user set host = '%' where user = 'root';
刷新受權 ,該行代碼必須有。。FLUSH PRIVILEGES;
4.JDBC-ODBC橋連方式從數據庫中讀取數據出現亂碼解決方案
不要直接讀取,可使用以下方式轉換讀取,問題解決
String stuname=new String(rs.getBytes(2),"utf-16le");
結語:JDBC和數據庫交互產生亂碼是開發中常常遇到的棘手問題,但願這裏的總結能夠幫助到您。