sql语句不要使用拼接,容易出错。可以使用点位符,变量等来处理参数,如 String sql = "select name from user where name=:name"; Query query = session.createSQLQuery(sql); query.setParameter("rname", username);sql语句里的:name就是用来点位的,然后在query里调用setParameter来设置它的值,这种方式可以防止sql注入,而且sql语句清晰,不易出错。
String sql = "select name from user where name=:name";
Query query = session.createSQLQuery(sql);
query.setParameter("rname", username);sql语句里的:name就是用来点位的,然后在query里调用setParameter来设置它的值,这种方式可以防止sql注入,而且sql语句清晰,不易出错。
你这种实现方法太死的吧,如果条件多就不知道有多少种判断了,出现以上情况,可能是你有些情况没判断到。
其实没必要用if这样死判断,用个数组把文本框传过的的一个值、和一个列名接收参考代码请看下面:ACtion 类public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
XuanzForm xuanzForm = (XuanzForm) form;
DBConnection db=new DBConnection();
UserInfo us=new UserInfo();
String [] row=new String [5];//把需要查询的列名用数组装着
row[0]="username";
row[1]="age";
row[2]="sex";
row[3]="love";
row[4]="type";
String [] zhi=new String [5];
zhi[0]=xuanzForm.getUserinfo().getUsername();
zhi[1]=String.valueOf(xuanzForm.getUserinfo().getAge());
if(xuanzForm.getUserinfo().getAge()==0){
zhi[1]="";
}
zhi[2]=xuanzForm.getUserinfo().getSex();
zhi[3]=xuanzForm.getUserinfo().getLove();
zhi[4]=xuanzForm.getUserinfo().getType();
List list=db.getlistinfo(row,zhi); 调用方法
request.setAttribute("list",list);
return mapping.findForward("index");
}
查询的方法:Row 是列名 args是对应列名的值
public List getlistinfo(String[] row, String[] args) {
UserInfo us = null;
List list = new ArrayList();
String sql = "select * from Uinfo where ";
String str = "";
String str2 = "";
String str3 = "";
for (int i = 0; i < args.length; i++) {
if (args[i] != null && !args[i].equals("")) {
str = row[i] + "='" + args[i] + "' and ";
} else {
continue;
}
str2 = str2 + str;
}
str3 = sql + str2.substring(0, str2.length() - 5);
System.out.println(sql + str2.substring(0, str2.length() - 5));
try {
ResultSet rs = this.getResultSet(str3, null);
while (rs.next()) {
us = new UserInfo();
us.setUsername(rs.getString("username"));
us.setAge(rs.getInt("age"));
us.setLove(rs.getString("love"));
us.setType(rs.getString("type"));
us.setSex(rs.getString("sex"));
list.add(us);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}