关于一个查询的程序:
这个是获得结果的函数
public ResultSet getRes(Statement stmt,String sql){
try {
rs = stmt.executeQuery(sql);
} catch (SQLException ex) {
}
return rs;
}
由这个函数调用
public List setQuery(CActionForm form,String[] values) throws Exception{ stmt = getStatement(getConnection());
String sql =javaFormat.getQueSql(form,values);
System.out.println(sql);
rs = getRes(stmt,sql);//..........
System.out.println(rs.getRow());
List list = new ArrayList();
list = javaFormat.fromRsToList(form,rs);
this.doClose();
return list;
}我测试了下并打印出来
打印出来sql语句:
当是:select * from student where age like '%12%' and username like '%李四%'一个结果都没有输出,但是实际上是有一条符合条件的.
当是:select * from student where age like '%12%' and username like '%%' 就正常的有两条记录出现了.请问这个是什么问题?
从以上描述中能看出来么?
这个是获得结果的函数
public ResultSet getRes(Statement stmt,String sql){
try {
rs = stmt.executeQuery(sql);
} catch (SQLException ex) {
}
return rs;
}
由这个函数调用
public List setQuery(CActionForm form,String[] values) throws Exception{ stmt = getStatement(getConnection());
String sql =javaFormat.getQueSql(form,values);
System.out.println(sql);
rs = getRes(stmt,sql);//..........
System.out.println(rs.getRow());
List list = new ArrayList();
list = javaFormat.fromRsToList(form,rs);
this.doClose();
return list;
}我测试了下并打印出来
打印出来sql语句:
当是:select * from student where age like '%12%' and username like '%李四%'一个结果都没有输出,但是实际上是有一条符合条件的.
当是:select * from student where age like '%12%' and username like '%%' 就正常的有两条记录出现了.请问这个是什么问题?
从以上描述中能看出来么?
刚刚突然想到了~应该是中文乱码的事情,我试了一下,要是username like '%李四%'这里是个换成英文的可以了~
可是怎么解决呢?
http://hi.baidu.com/lovekaili/blog/item/f250b2c74fe808d8d000601e.html
我就在这解决的
百分号里面内容是从哪儿传过来的?b/s应用中会出现编码问题的地方大概有三个
1, 前台页面
2, 后台处理 action
3, 数据库表中然后就是这三处的相互传递的时候容易出现编码不一致,从而导致一些乱码问题。你首先要确定是哪个环节出的问题。如果是前台传到后台后出问题
察看前台编码设置没问题的话
public ResultSet getRes(Statement stmt,String sql){
try {
// 在这里把 sql 进行一次转码
rs = stmt.executeQuery(sql);
} catch (SQLException ex) {
}
return rs;
} http://blog.csdn.net/Ice0River/archive/2007/08/17/1747613.aspx
参照下这个看有帮助没