日期:2014-05-20  浏览次数:20844 次

java多条件选择的问题
我想实现一个多条件查询数据库的方法。该方法接收一个对象,如果该对象字段有值则进入选择条件,如果没有则排除。使用sql语言可以这样实现。
SELECT Id, Name, Age, ClassID, Sex, Rark
FROM stu
WHERE (Id=@a or @a is null)and(Name =@c or @c is null)
只要id或者name两个字段中有一个有条件就可以选择这个条件,如果两个条件都为null那么就是全部选择。

但是如何在java当中实现呢?
我试着这样实现
 public ArrayList selectArr(biao obj) {
  Connection conn = DbConn.sql(); //获得连接对象
  PreparedStatement pst = null; //说明sql语句执行对象,该对象可使用参数
  ArrayList arr = new ArrayList();
  try {
  pst = conn.prepareStatement(
  "SELECT * FROM [test] WHERE (Name=? or ? is null")and(Id=?or ?is null);
  pst.setString(1, obj.getName()); //给参数赋值
  pst.setString(2, obj.getName());
  pst.setString(3, obj.id());
  pst.setString(4, obj.id());
  ResultSet rs = pst.executeQuery(); //执行查询
  }
  catch(){}
}

但是结果并不成功。主要是字段为空时不知道为什么不能满足“?is null”条件。各位知道为什么这样吗?有什么解决的办法?另外请教大家对于多条件查询有什么高招没有?


------解决方案--------------------
多写点条件自己生成这个条件啊


------解决方案--------------------
你这样去写这样的复杂的sql语句是很不科学的,其实你的那些判定条件可以在java代码里面去实现