PreparedStatement预处理技术的中文乱码问题
本人使用jdbc直接连接数据库,数据库使用的是sql server2000,tomcat5, jdk1.5,在编写javabean的时候,使用一个方法向数据库写入记录,使用Preparedstatement处理,设置了中文参数,但是在jsp里调用的时候,数据库里面得到的是乱码,但是使用sql连接语句时就没有乱码问题,请问何故?
代码如下:(主释了的语句有乱码问题,传入的参数没有问题,所有中文字符串参数在数据库都是乱码)
/**
* 添加用户(用户注册)
* @param username
* @param password
* @param truename
* @param email
* @param tel
* @param address
* @param zip
* @return 操作成功返回空,否则返回错误信息
*/
public String addUser(String username,String password,String truename,String email,String tel,String address,String zip) throws UnsupportedEncodingException{
String sErr="";
/*
String sql="insert into tb_user (user_username,user_password,user_truename,user_email,user_tel,user_address,user_zip,user_groupid) values (?,?,?,?,?,?,?,1)";
try {
PreparedStatement ps=db.getConn().prepareStatement(sql);
ps.setString(1,username);
ps.setString(2,Encrypt.MD5(password));
ps.setString(3,"火星");
System.out.println(truename);
ps.setString(4,email);
ps.setString(5,tel);
ps.setString(6,address);
ps.setString(7,zip);
ps.executeUpdate();
ps.close();
} catch (SQLException e) {
sErr=e.getMessage();
}
*/
String sql="insert into tb_user (user_username,user_password,user_truename,user_email,user_tel,user_address,user_zip,user_groupid) values ("+PStr.SqlStr(username)+","+PStr.SqlStr(Encrypt.MD5(password))
+","+PStr.SqlStr(truename)+","+PStr.SqlStr(email)+","+PStr.SqlStr(tel)+","+PStr.SqlStr(address)+","+PStr.SqlStr(zip)+",1)";
try {
Statement stmt=db.getConn().createStatement();
stmt.executeUpdate(sql);
stmt.close();
} catch (SQLException e) {
sErr=e.getMessage();
}
return sErr;
}