JDBC更新mysql数据库出乱码
--创建和定义一张表
DROP TABLE user ;
CREATE TABLE user(
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
password VARCHAR(32) NOT NULL,
age INT NOT NULL,
sex VARCHAR(2) DEFAULT '男',
birthday DATE
) ;
java code:
import java.sql.Connection ;
import java.sql.PreparedStatement ;
import java.sql.DriverManager ;
import java.sql.ResultSet ;
public class ResultSetDemo{
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
public static final String DBUSER = "root" ;
public static final String DBPASS = "mysqladmin" ;
public static void main(String args[]) throws Exception {
Class.forName(DBDRIVER) ;
Connection conn = null ;
ResultSet rs = null ;
PreparedStatement pstmt = null ;
String sql = "SELECT id,name,password,age,sex,birthday FROM user WHERE id=?" ;
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
pstmt = conn.prepareStatement(sql,
ResultSet.TYPE_SCROLL_SENSITIVE ,
ResultSet.CONCUR_UPDATABLE) ;
pstmt.setInt(1,4) ;
rs = pstmt.executeQuery() ;
rs.last() ;
rs.updateString("name","张三") ;
rs.updateRow() ;
rs.close() ;
pstmt.close() ;
conn.close() ;
}
}
该代码能正确执行,也能修改数据,但是数据修改后就出问题了,被修改的数据在数据库中显示为乱码,读取出来也为乱码。
主要错在修改数据后被修改的数据成为乱码。
在之前我详表里面插入了10条数据也是用JDBC方式插入,没有出现编码问题。
数据修改后:
mysql> SELECT * FROM user ;
+----+--------+--------------+-----+------+------------+
| id | name | password | age | sex | birthday |
+----+--------+--------------+-----+------+------------+
| 1 | 张三0 | www.mldn.cn0 | 22 | 男 | 2011-08-20 |
| 2 | 张三1 | www.mldn.cn1 | 23 | 男 | 2011-08-20 |
| 3 | 张三2 | www.mldn.cn2 | 24 | 男 | 2011-08-20 |
| 4 | 鍛ㄤ腹 | www.mldn.cn3 | 25 | 男 | 2011-08-20 |
| 5 | 张三4 | www.mldn.cn4 | 26 | 男 | 2011-08-20 |
| 6 | 张三5 | www.mldn.cn5 | 27 | 男 | 2011-08-20 |
| 7 | 张三6 | www.mldn.cn6 | 28 | 男 | 2011-08-20 |
| 8 | 张三7 | www.mldn.cn7 | 29 | 男 | 2011-08-20 |
| 9 | 张三8 | www.mldn.cn8 | 30 | 男 | 2011-08-20 |
| 10 | 张三9 | www.mldn.cn9 | 31 | 男 | 2011-08-20 |
+----+--------+--------------+-----+------+------------+
10 rows in set (0.00 sec)
如上所示:id 4, name 乱码。。。