java程序向mysql数据表插入数据时中文乱码问题 我是个初学者,各位高手帮帮忙。java文件和数据库的字符集都是UTF-8,但是当我用java程序向MySQL数据库里的数据表插入数据时中文字符都变成问号了。网上都是说编码方式一样就没事了,可是我都换成GBK码也不行。这怎么解决?Java数据库乱码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 pps.setBinaryStream(9, new ByteArrayInputStream(string.getBytes("utf-8")));这样写试试 在数据库连接的后面也要加上utf-8 ,jdbc:mysql://127.0.0.1:3306/databaseName?characterEncoding=UTF-8 首先,在发往数据库保存的最后一层进行一下输出,如果在发往数据库之前就已经是乱码了,那就和MySql没有关系,专注处理你的代码就好了。如果发往之前没有乱码,也就是在保存的时候出的问题,就得确定你发往数据库的数据的编码方式,建议先用String和Byte进行下转化,然后再发往数据库,两端编码一直即可。按照我的习惯的话,我喜欢都用utf-8 【问题补充】附上代码和结果,麻烦各位高手指点一下import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class InsertData { static Connection con; public static Connection getConnection() { //建立返回值为Connection的方法 try { Class.forName("com.mysql.jdbc.Driver"); //加载数据库驱动 System.out.println("数据库驱动加载成功"); con = DriverManager .getConnection( "jdbc:mysql://localhost:3306/db_test1", "root", ""); // 获取数据库连接 if (con != null) { System.out.println("数据库连接成功"); } } catch (Exception e) { e.printStackTrace(); } return con; //按方法要求返回个Connection对象 } /** * @param args */ public static void main(String[] args) { con = getConnection(); // 调用数据库连接方法 Statement statement; try { statement = con.createStatement(); // 获取Statement对象 for(int i=0;i<3;i++){ statement.execute("insert into tb_student(name,sex,age,salary)values('小红','女',24,5000)"); // 执行添加数据操作 } System.out.println("student表的所有记录:"); ResultSet res=statement.executeQuery("select * from tb_student"); //查询所有记录 while(res.next()){ int id=res.getInt("id"); String name=res.getString("name"); String sex=res.getString("sex"); int age=res.getInt("age"); int salary=res.getInt("salary"); System.out.println("id:"+id+"\t姓名:"+name+"\t性别:"+sex+"\t\t年龄:"+age+"\t\t工资:"+salary); } //关闭连接 res.close(); statement.close(); con.close(); } catch (SQLException e) { e.printStackTrace(); } }} 加上这个就解决了。jdbc:mysql://127.0.0.1:3306/databaseName?useUnicode=true&characterEncoding=utf8谢谢谢谢各位 使用GridBagLayout??? 关于usebean的问题 (笔试题)编程题: 写一个Singleton出来??? 问个java编程思想里的例子 求正态分布函数实现 应用程序中如何创建Java内存表。 页面中的applet,每当页面刷新时,applet中的一行小图标就右移。但用Ctrl+F5刷新页面,该applet就能保持初始状态,请问是什么原因? 急!程序可以运行,但是打成jar包之后就不行了! 好奇怪!!frame里repaint不调用paint方法吗???? dfasdf mina框架发送数据问题 SWT打成JAR包后运行假死
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class InsertData { static Connection con;
public static Connection getConnection() { //建立返回值为Connection的方法
try {
Class.forName("com.mysql.jdbc.Driver"); //加载数据库驱动
System.out.println("数据库驱动加载成功");
con = DriverManager
.getConnection(
"jdbc:mysql://localhost:3306/db_test1",
"root", ""); // 获取数据库连接
if (con != null) {
System.out.println("数据库连接成功");
}
} catch (Exception e) {
e.printStackTrace();
}
return con; //按方法要求返回个Connection对象
} /**
* @param args
*/
public static void main(String[] args) {
con = getConnection(); // 调用数据库连接方法
Statement statement;
try {
statement = con.createStatement(); // 获取Statement对象
for(int i=0;i<3;i++){
statement.execute("insert into tb_student(name,sex,age,salary)values('小红','女',24,5000)"); // 执行添加数据操作
}
System.out.println("student表的所有记录:");
ResultSet res=statement.executeQuery("select * from tb_student"); //查询所有记录
while(res.next()){
int id=res.getInt("id");
String name=res.getString("name");
String sex=res.getString("sex");
int age=res.getInt("age");
int salary=res.getInt("salary");
System.out.println("id:"+id+"\t姓名:"+name+"\t性别:"+sex+"\t\t年龄:"+age+"\t\t工资:"+salary);
}
//关闭连接
res.close();
statement.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}}
谢谢谢谢各位