第1个回答 2010-12-06
呵呵。小问题。有点实际经验就很好解决了。。
String sql = "SELECT * FROM Book WHERE 1=1";
if(书名不为空){
sql = sql + " and title = " + 书名;
}
if(作者不为空){
sql = sql + " and author=" + 作者;
}
----
经验解决。呵呵。本回答被提问者采纳
第2个回答 2010-12-06
Map map = new HashMap();
map = XXXXX (); XXXXX ();为lz 从页面获取信息后封装Map的方法
如:页面上有10个复选框 ,而用户选择了3个 点查询事件,以 品牌 thingpad CPU i5,内存 4G
为例
那么 map 应该放了3对值
有了map 下面拼接 sql 语句
定义 方法 public String getSql (map) {
String sql = ;
StringBuffer buffer = new StringBuffer();
buffer.append(“select * from 表 where 1= 1”);
Set set = map.ketSet();
Iterator i = set.iterator();
while (i.hasNext()) {
String value = i.next();
buffer.append(" and ");
buffer.append(" " +value );
buffer.append(" = ");
buffer.append( map.get(value ););
}
sql = buffer.toString();
//结果应该为 select * from 表 where 1=1 and 品牌 = “thinkpad” and CPU = “i5” and 内存 = 4G
return sql;
}
然后在用JDBC去执行这个sql ,就会查询出结果
有的单词好像写的不对。lz 在 看看
第3个回答 2010-12-06
我感觉用 PreparedStatement ps = con.prepareStatement("select * from Book where title=?");
这样的也不是太恰当,因为lz现在的问题是参数不确定,sql 查询where后的条件就也确定不了。
我一般都这么处理的,方法中传参也用Map的方式。拿到Map后再拼接sql参数
Map map = new HashMap();
map.put("p1","aaa");
map.put("p2","bbb");
.....
然后根据Map中参数拼接sql 参数
String sql ="select * from book whre 1=1";
if (null != map.get("p1")) sql = sql + " and p1='"+(String)map.get("p1")+"'";
if (null != map.get("p2")) sql = sql + " and p2='"+(String)map.get("p2")+"'";
...
sql = sql + " order by .....“;
这样的话不用重载n个方法了,多个参数就这里多加个if判断即可。
第4个回答 2010-12-06
String sql = "select * from book where 1=1";
if (checkTitle)
sql = sql + " and title=\'"+title + "\'";
if (checkAuthor)
sql = sql + " and author=\'"+author+ "\'";
依次类推 把条件拼起来 且符合语法