我有这段代码:
{{1}}
当我编译我的程序时,我没有任何错误,但是当我运行它并点击“购买”按钮时,它给出了一个错误说" ORA-00933:SQL命令未正确结束&#34 ;
答案 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