在数据库中有一个表:message,有三个字段:
Field Type
from varchar(20)
to varchar(20)
msg varchar(30)
现在从程序中向表中插入数据:
String from =msg.getFromUser().toString();
String message = msg.getMessage().toString();
Connection con = getConnection();
Statement st;
try {
st =con.createStatement();
String sql = " select id,ip from user ";
ResultSet rs=st.executeQuery(sql);
while(rs.next())
{
String id = rs.getString(1);
String IP=rs.getString(2);
String to = id;
String sql2 = "insert into message values ('"+from+"','"+to+"','"+message+"')";
st.execute(sql2);
}
}catch(Exception e){e.printStackTrace();} 结果报错:
java.sql.SQLException: Incorrect string value: '\xE3\x80\x90\xE9\x80\x9A...' for column 'msg' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3170)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3099)
at com.mysql.jdbc.Statement.execute(Statement.java:695)
at Server.RequestProcessor.chat(RequestProcessor.java:303)
at Server.RequestProcessor.run(RequestProcessor.java:55)
at java.lang.Thread.run(Thread.java:662)
Field Type
from varchar(20)
to varchar(20)
msg varchar(30)
现在从程序中向表中插入数据:
String from =msg.getFromUser().toString();
String message = msg.getMessage().toString();
Connection con = getConnection();
Statement st;
try {
st =con.createStatement();
String sql = " select id,ip from user ";
ResultSet rs=st.executeQuery(sql);
while(rs.next())
{
String id = rs.getString(1);
String IP=rs.getString(2);
String to = id;
String sql2 = "insert into message values ('"+from+"','"+to+"','"+message+"')";
st.execute(sql2);
}
}catch(Exception e){e.printStackTrace();} 结果报错:
java.sql.SQLException: Incorrect string value: '\xE3\x80\x90\xE9\x80\x9A...' for column 'msg' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3170)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3099)
at com.mysql.jdbc.Statement.execute(Statement.java:695)
at Server.RequestProcessor.chat(RequestProcessor.java:303)
at Server.RequestProcessor.run(RequestProcessor.java:55)
at java.lang.Thread.run(Thread.java:662)
结果就是发送的消息,很对。
jdbc:mysql://127.0.0.1/SSH?characterEncoding=utf-8和数据库对应
结果是insert into message values ('sa','lxj',' 通知四年级')
没有错啊
public static Connection getConnection(){
Connection con = null;
try{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost/sms?useUnicode=true&characterEncoding=utf-8", "root", "123456");
}catch(Exception e){e.printStackTrace();}
return con;
}
插入varchar是不需要单引号的
如果message内容是It's my flower.那么拼出来的语句如下:
insert into message values ('Hello','World','It's my flower.')"
肯定会有错。