以前没搞过mysql数据库,昨天拿到一个mysql数据库,发现表字段都是中文名。例如:ID,中文题名,英文题名。
然后在HeidiSQL中,执行SQL语句:select * from re where 中文题名='虚拟组织的学习活动与知识管理战略',能查出值。
我在程序中,组装了这么一条语句:String sql = "select * from re where 中文题名='" + name + "'";,再执行的时候,就报错了,说是'???'='???????????????''。
这是为什么呀?我把表字段换成英文就好了。
在ps=conn.prepareStatement(sql);中发生了什么事情。
conn = ConnMySql.getConnection();
String sql = "select * from re where 中文题名='" + name + "'";
System.out.println(sql);
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
望大神详解。
然后在HeidiSQL中,执行SQL语句:select * from re where 中文题名='虚拟组织的学习活动与知识管理战略',能查出值。
我在程序中,组装了这么一条语句:String sql = "select * from re where 中文题名='" + name + "'";,再执行的时候,就报错了,说是'???'='???????????????''。
这是为什么呀?我把表字段换成英文就好了。
在ps=conn.prepareStatement(sql);中发生了什么事情。
conn = ConnMySql.getConnection();
String sql = "select * from re where 中文题名='" + name + "'";
System.out.println(sql);
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
望大神详解。
是不是编码的问题,有没有处理编码问题?
这个我经常用,没出什么问题紫装的时候确定组装没问题 System.out.println(sql);
打印出来有没有问题,,我的意思是打印出来再把sql语句放到数据库去执行一下,判断是不是sql语句本身问题,还是你执行sql的问题
建议1.把错误贴出来
2.把组装好的sql语句打印出来,然后复制到mysql里去执行一下,看看sql执行是否会异常
3.在去debug一下代码从连接数据库开始,调试一下。看看代码哪里异常,可以多些几个try捕获异常
show variables like 'character_set_%';
看下数据库的编码。
p.setProperty("charSet","GBK");// 这个忘了是charSet 还是setChar,后面的编码根据数据的编码是什么就改成什么吧
p.setProperty("user","");
p.setProperty("password","");试试用Properties 作为参数的方式创建connection,这样可以指定连接的编码
mysql的url后边可以带上编码的?user_encoding=utf-8之类的吧