我试图在我的servlet控制器中运行一个查询,该查询将id与我的数据库中的名称相匹配。使用的查询是
String query="SELECT *FROM entry WHERE id ="+id2+"AND name="+sname;
但我不断收到错误消息
“在第1行'name = Mary Jane'附近使用正确的语法”
我非常确定我的查询是正确的,当我运行它并且它运行的AND名称部分。所以我不知道为什么它不会与AND名称部分一起使用,除非我的查询对于那一方是错误的。任何想法?
答案 0 :(得分:0)
连接字符串是 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);