JDBC是Java Database Connectivity的縮寫,它是Java語言連接數(shù)據(jù)庫的標準技術(shù)。而MySQL是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),JDBC連接MySQL可以通過以下三個步驟實現(xiàn):
- 加載JDBC驅(qū)動:在Java中連接MySQL數(shù)據(jù)庫必須要先加載MySQL的JDBC驅(qū)動包。
- 連接MySQL數(shù)據(jù)庫:連接MySQL數(shù)據(jù)庫需要指定數(shù)據(jù)庫的URL、用戶名和密碼。
- 執(zhí)行SQL語句:通過Statement、PreparedStatement接口執(zhí)行SQL語句,執(zhí)行結(jié)果可以是ResultSet對象。
但是,在JDBC連接MySQL時可能會遇到亂碼問題,這是因為MySQL默認采用的是UTF-8字符集,而Java中字符串是采用Unicode字符集的,這兩者之間需要進行轉(zhuǎn)換。以下是一個出現(xiàn)亂碼問題的JDBC連接MySQL的例子:
Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false"; String user = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password); PreparedStatement pstmt = conn.prepareStatement("select * from student"); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { String name = rs.getString("name"); System.out.println(name); } rs.close(); pstmt.close(); conn.close();
為了解決亂碼問題,需要在MySQL連接URL中加入一些參數(shù),如useUnicode=true和characterEncoding=utf-8。以下是修改后的JDBC連接MySQL的例子:
Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false"; String user = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password); PreparedStatement pstmt = conn.prepareStatement("select * from student"); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { String name = new String(rs.getString("name").getBytes("ISO-8859-1"), "UTF-8"); System.out.println(name); } rs.close(); pstmt.close(); conn.close();
以上修改后的代碼在獲取ResultSet中的字符串時,使用了getBytes()方法將字符串進行了轉(zhuǎn)換,從ISO-8859-1轉(zhuǎn)換為UTF-8,這樣就能夠正確地顯示中文字符了。