select语句给出字符串变量的错误

时间:2012-11-09 23:30:10

标签: java sql jdbc

我在Java程序中编写以下SQL查询

PreparedStatement pre = conn.prepareStatement("select ID,FirstName,LastName,Dept from "                 
    + "student where ID =" + ID + " or FirstName=" + firstName + ";");

但是,我收到以下错误:

  

使用FirstName =“+ Parker

的正确语法

这是如何引起的?如何解决?

3 个答案:

答案 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 + "';");