jdbc连接mysql中,我想插入中文,但输入后的sql语句是问号

[code="java"]stmt = conn.prepareStatement("insert into p values(?,?,?,?)");
stmt.setString(1, "P7");
stmt.setString(2, "螺丝");
stmt.setString(3, "红");
stmt.setInt(4, 32);
System.out.println(stmt);[/code]
输出结果为:
com.mysql.jdbc.JDBC4PreparedStatement@1125f92: insert into p values('P7','??','?',32)

这里还没有真正进入mysql进行查询,所以肯定是eclipse的默认编码方式导致的问题。

解决方法:
http://zhidao.baidu.com/question/167456075.html

把整个工程的“Text file encoding”属性设为GBK,就不会有乱码了。
设置方法:在eclipse中右击工程,点击弹出框最下面的“Properties”,然后在弹出的窗口左侧点击“Resource”,便可以在窗口的右部看到“Text file encoding”属性,点击“Other”前的单选框,在下拉列表中选择“GBK”。最后,点击右下部的“Apply”,“OK”退出。
这样设置后,你再执行System.out.println("中文出现乱码!");时控制台上就不会是乱码了。

mysql数据库安装是可以指定编码,或者修改配置文件

链接数据库串后面添加?useUnicode=true&characterEncoding=utf-8设置编码格式

这又是传说中的乱码问题!

普通的乱码问题;首先在连接的时候可以制定编码方式;
其次看看你的数据库在配置的时候选择的是不是utf-8的编码方式;
总之要对上;

("insert into p (写上对应表的属性) values(?,?,?,?)"
例如 我的数据库的表为diary
String message = "INSERT INTO diary (title,author,time,contain)" +
"VALUES(?,?,NOW(),?)";
PreparedStatement statement = connection.prepareStatement(message);

("insert into p (写上对应表的属性) values(?,?,?,?)"
例如 我的数据库的表为diary
String message = "INSERT INTO diary (title,author,time,contain)" +
"VALUES(?,?,NOW(),?)";
PreparedStatement statement = connection.prepareStatement(message);