解决SQL语句中含有中文字符无法查询问题
上一篇 /
下一篇 2012-04-17 09:44:49
/ 个人分类:数据库
我在写JDBC的是时候,遇见了因为在
SQL语句中含有中文无法运行的情况,于是我把这句话放到mysql客户端中
测试,结果通过,我就估计不是字符编码问题,是PreparedStatement这个接口做了一些我不知道的处理导致这个问题的发生。而且一般直接使用?问号代替动态查询要求,而在客户端中必须加上双引号,于是我测试了一下直接把这个SQL语句写上去运行,结果没问题,只是加上了两个转义字符\"。下面我把代码发上来
s!b1rA"bj)l H0
]*m*M4N?5hG$w0Ix TVq#?$o'c5fs0package oop.hu.ytu.dao; v|7NDA F*K0NJ\Q*k5J4f0importjava.sql.Connection;51Testing软件测试网e*b!FCg.F*D import java.sql.PreparedStatement; ;m.K6@6ZZO
b0import java.sql.ResultSet;51Testing软件测试网i
q([F.G~/z import oop.hg.ytu.beans.LoginBean; L9xO"`J_"r0import oop.hg.ytu.utils.JdbcUtils; ZI9lFf m$V G;M;]0h/L*O }(s1VN0/** O9cil%a!b0tf5ce0 * 处理用户登录请求51Testing软件测试网b"_W&dn2pu*En/}1[ * @author Administrator51Testing软件测试网U!v
?|N * $|6bA;@O.K6y^f-m0 */51Testing软件测试网D*o P-`Z public class LoginDomain { Xe0R4O$m|$i9~0 public LoginBean select(String tableName,String username){51Testing软件测试网5N/gfS'j"\ ve Connection con = null;51Testing软件测试网#VZ`ZTP;M
n PreparedStatement pt = null; 6l7x)p*lk8yU0 ResultSet rs = null; :CzW/U#Y0 LoginBean bean = new LoginBean(); &Sp:oQGPM9iG0 zPv-Anh
JK!k0 try { %pR,`7Q/~8}0 username = "\""+username+"\"";51Testing软件测试网Nb(u6bHb;b con = JdbcUtils.getConnection();51Testing软件测试网|/Y0I#I9\:[ String sql = "select name,password from "+tableName+" where name="+username+"";51Testing软件测试网we:RS(QV!B8?;_ J pt = con.prepareStatement(sql); IBp D
kZk0Jz8J9O)Da0 // pt.setString(1, tableName); %lvy.j~0Y0 // pt.setString(2, u); i!G$u/f;L`nZ0 rs = pt.executeQuery();51Testing软件测试网HA)S(}3L4Lr9cY while(rs.next()){51Testing软件测试网!a8^Z:}o%Zb)jK!? bean.setUsername(rs.getString("name"));51Testing软件测试网*C0Ul&j;HjL bean.setPassword(rs.getString("password")); ]v$WR%j m2BDL0 } C"?EA-rSUz0 } catch (Exception e) {51Testing软件测试网;SRjV9EvX @ throw new RuntimeException(e);
{2q \k.yH4A:fMw0 }finally{ 0S c|%n0D
Q.a s0 JdbcUtils.free(rs, pt, con); ,oG!G,qu:a4s9|;[0 }
|