在Java中連接MySQL時,經常出現亂碼的問題。原因是MySQL的默認編碼是utf8,而Java的默認編碼是ISO-8859-1。因此,需要對Java程序進行編碼設置,以避免亂碼問題的出現。
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編碼方式。
此外,在對數據庫進行操作時,我們可以使用如下方式進行編碼設置:
stmt = conn.prepareStatement("select * from users where username = ?"); stmt.setString(1, "張三");
在設置參數時,我們可以使用Java中的字符串類型來表示中文字符。而在數據庫中的存儲,也應該使用UTF-8編碼方式,以避免出現亂碼問題。
最后,要記得在程序退出時關閉數據庫相關的資源,以確保程序能夠正常運行,同時也避免資源浪費。