Java连接MySQL用指定编码,首先要明确MySQL数据库的字符集,通常选择utf8编码。然后在Java程序中使用JDBC连接数据库,并设置连接参数。
String url = "jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=UTF-8";Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection(url, "username", "password");
在设置连接参数时,可以使用"useUnicode=true"和"characterEncoding=UTF-8"来指定使用utf8编码。这样可以确保在向数据库中插入或读取数据时,使用的编码是正确的。
如果需要在执行SQL语句时使用指定的编码,可以使用PreparedStatement对象。
String sql = "INSERT INTO mytable (name, age) VALUES (?, ?)";PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setString(1, new String("张三".getBytes("UTF-8"), "UTF-8"));pstmt.setInt(2, 20);int result = pstmt.executeUpdate();
在PreparedStatement中使用setString方法时,将字符串转换为UTF-8编码,并指定使用UTF-8编码。这样可以确保插入的数据使用的编码是正确的。
在读取数据时,也可以使用指定编码来转换字符串。
String sql = "SELECT name, age FROM mytable WHERE id=?";PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setInt(1, 1);ResultSet rs = pstmt.executeQuery();if (rs.next()) {String name = new String(rs.getBytes("name"), "UTF-8");int age = rs.getInt("age");}
在读取ResultSet中的字符串时,先使用getBytes方法获取字节数组,然后使用指定编码转换为字符串。这样可以确保读取的数据的编码是正确的。