prepraredStatement.setString(index,value)
index:sql语句中第几个问号? ,(1,2,3,…)
value:String
/*
* 总:使用setString方法会所形成的sql语句会在你的变量上加上单引号,字段名是变量要使用拼接,变量也可以使用拼接,拼接yyds
* 使用prep.toString()方法能够看到形成的sql语句
*
* contains(String name,String value)
* name=email,value=1327680696@qq.com
* sql语句:SELECT * FROM d_user WHERE email="1327680696@qq.com";
*
* 合起来写导致语句称为第一种情况,查询不到:
* String sql = "select * from d_user where ? = ?;";
* prep.setString(1, name);
* prep.setString(2, value);
* System.out.println(prep.toString());
* rs = prep.executeQuery();--->
* select * from d_user where 'email' = '1327680696@qq.com';查询不到
* 给字段加上了引号,查询不到
*
* 分开写,语句变成了下面这种情况,查询得到
* String sql = "select * from d_user where email = ?;--->
* select * from d_user where email = '1327680696@qq.com';查到
*
* 尝试拼接:
* String sql = "select * from d_user where "+name+" = ?;";
* prep.setString(1, value);---->
* select * from d_user where email = '1327680696@qq.com';查到
*/
public static boolean contains(String name,String value){
boolean isContain = false;
Connection con = null;
PreparedStatement prep = null;
ResultSet rs = null;
con = DBUtil.getCon();
// String sql = "select * from d_user where ? = ?;";
String sql = "select * from d_user where "+name+" = ?;";
System.out.println(name+value);
try {
prep = con.prepareStatement(sql);
// prep.setString(1, name);
// prep.setString(2, value);
prep.setString(1, value);
System.out.println(prep.toString());
rs = prep.executeQuery();
if(rs.next()){
System.out.println("yes");
isContain = true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
DBUtil.close(rs, prep, con);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return isContain;
}