我在Java程序中编写以下SQL查询
PreparedStatement pre = conn.prepareStatement("select ID,FirstName,LastName,Dept from "
+ "student where ID =" + ID + " or FirstName=" + firstName + ";");
但是,我收到以下错误:
使用FirstName =“+ Parker
的正确语法
这是如何引起的?如何解决?
答案 0 :(得分:1)
像这样使用PreparedStatement
:
PreparedStatement pre = conn.prepareStatement("select ID,FirstName,LastName,Dept from student where ID = ? or FirstName = ?");
pre.setInt(1, ID);
pre.setString(2, firstName);
答案 1 :(得分:1)
您应该通过使用预处理语句参数来利用预准备语句。这样,您可以使用setter以实用方式设置参数。
http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html。
以下是Oracle文档的摘录:
PreparedStatement updateSales = null;
String updateString =“update”+ dbName +“。COFFEES”+“set SALES = ?其中COF_NAME = ?“;
updateSales = con.prepareStatement(updateString);
updateSales.**setInt**(1, e.getValue().intValue());
updateSales.**setString**(2, e.getKey());
请确保按照 * s sql查询的顺序设置语句* 。
答案 2 :(得分:0)
我没有在Java中使用sql,但我的猜测是因为你的名字周围没有单引号。你想要:
PreparedStatement pre = conn.prepareStatement("select ID,FirstName,LastName,Dept from " + "student where ID =" + ID + " or FirstName='" + firstName + "';");
强调:
... FirstName='" + firstName + "';");