在Java中連接MySQL時,經(jīng)常出現(xiàn)亂碼的問題。原因是MySQL的默認(rèn)編碼是utf8,而Java的默認(rèn)編碼是ISO-8859-1。因此,需要對Java程序進行編碼設(shè)置,以避免亂碼問題的出現(xiàn)。
Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8", "root", "password"); stmt = conn.prepareStatement("select * from users where username = ?"); stmt.setString(1, "張三"); rs = stmt.executeQuery(); while (rs.next()) { String name = rs.getString("username"); System.out.println("姓名:" + name); } } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } }
在上面的代碼中,我們可以看到在連接MySQL時,使用了如下URL:
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
其中,useUnicode=true表示使用Unicode編碼,characterEncoding=utf-8表示使用UTF-8編碼方式。
此外,在對數(shù)據(jù)庫進行操作時,我們可以使用如下方式進行編碼設(shè)置:
stmt = conn.prepareStatement("select * from users where username = ?"); stmt.setString(1, "張三");
在設(shè)置參數(shù)時,我們可以使用Java中的字符串類型來表示中文字符。而在數(shù)據(jù)庫中的存儲,也應(yīng)該使用UTF-8編碼方式,以避免出現(xiàn)亂碼問題。
最后,要記得在程序退出時關(guān)閉數(shù)據(jù)庫相關(guān)的資源,以確保程序能夠正常運行,同時也避免資源浪費。