JAVA SQL命令未正确结束

时间:2016-05-25 06:41:01

标签: java oracle

我有这段代码:

{{1}}

当我编译我的程序时,我没有任何错误,但是当我运行它并点击“购买”按钮时,它给出了一个错误说" ORA-00933:SQL命令未正确结束&#34 ;

2 个答案:

答案 0 :(得分:5)

从字符串构建SQL语句时,必须确保存在需要空格的空格。

rs = stmt.executeQuery("SELECT *"+
     "FROM availablebooks_view");

您要发送的声明是

SELECT *FROM availablebooks_view

这是无效的语法。您的代码中的多个位置都存在此问题。

但是,由于逐步构建SQL语句会导致更大的问题。这使您对SQL Injection开放,您应该重写代码以改为使用预准备语句和参数。

答案 1 :(得分:1)

您的代码中存在多个错误

第一个是

rs = stmt.executeQuery("SELECT *"+
 "FROM availablebooks_view");

*FROM之间没有空格,这实际上会产生语法错误

第二个是

rs = stmt.executeQuery("UPDATE toys set copies "+ copies +"WHERE toyid= '"+toyid+"'");

=之后没有set copies,这也会造成错误。

第三个是

CallableStatement cstmt = con.prepareCall("INSERT INTO buy (buyid, toyid)" + "VALUES (?,?)");

VALUES

之前留出空格