我试图在我的servlet控制器中运行一个查询,该查询将id与数据库中的名称匹配。我正在使用的查询是
String query="SELECT *FROM entry WHERE id ="+id2+"AND name="+sname;
但我不断收到一条错误消息,说
“在第1行的'name = Mary Jane'附近使用正确的语法”
我很确定我的查询是正确的,当我在不使用AND名称的情况下运行它时,它可以工作。所以我不知道为什么它不能与AND名称部分一起使用,除非我的查询在那一侧是错误的。有任何想法吗?
连接字符串是SQL注入攻击的第一步!
如果要使用此路径,请添加空格:
String query="SELECT * FROM entry WHERE id = "+id2+" AND name= "+sname;
如果需要,请添加'
引号字符串文字:
String query="SELECT * FROM entry WHERE id = "+id2+" AND name= '"+sname + "'";
编辑:
您确实应该这样使用PreparedStatement
:
String query="SELECT * FROM entry WHERE id = ? AND name = ?";
PreparedStatement ps = con.prepareStatement(query);
ps.setInt(1, id2);
ps.setString(2, sname);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句