對于MySQL數據庫而言,UTF-8編碼是最為常用的字符集之一。在Java應用程序中使用MySQL JDBC驅動連接到MySQL數據庫時,需要注意數據庫、表和列的字符集都應該設置為UTF-8。
在連接MySQL數據庫之前,需要設置以下兩個參數:
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"; Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, "root", "123456");
其中,useUnicode=true 表示使用Unicode編碼,characterEncoding=UTF-8 表示采用UTF-8編碼方式。
對于MySQL表和列的創建,需要設置字符集為UTF-8。如表的創建語句如下:
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
其中,DEFAULT CHARSET=utf8 表示表的字符集設置為UTF-8。
在Java程序中向MySQL數據庫中寫入UTF-8編碼的數據時,需要用PreparedStatement替代Statement。PreparedStatement有一個方法setString(int parameterIndex, String x, int targetSqlType)可以指定要插入的字符串的編碼。下面是一個示例代碼:
String name = "張三"; String sql = "INSERT INTO user(name) VALUES(?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, name, Types.VARCHAR); pstmt.executeUpdate(); pstmt.close();
其中,setString(int parameterIndex, String x, int targetSqlType)方法的第三個參數targetSqlType為Types.VARCHAR,表示插入的字符串類型為VARCHAR。
總之,使用MySQL JDBC連接MySQL數據庫時,需要設置UTF-8編碼,并且在創建表和列時設置字符集為UTF-8。在向MySQL數據庫中寫入UTF-8編碼的數據時,需要用PreparedStatement替代Statement,并且使用setString(int parameterIndex, String x, int targetSqlType)方法指定編碼類型。