我在 sqlplus (Oracle 11g) 上执行了查询
select Bookdetails.TITLE,Bookdetails.PRICE
from bookdetails
inner join orderdetails
ON BOOKDETAILS.BOOKID=ORDERDETAILS.BOOKID
Where Orderdetails.username ='Divya.grg';
我得到了这个输出:
TITLE PRICE
------------------------------------------------------------ ----------
mastering c++ 876.2
construction material reference book 2nd edition 332
let us c++ 793
但是当我在 JDBC 程序上执行相同的查询时:
PreparedStatement ps=conn.prepareStatement("select Bookdetails.TITLE,Bookdetails.PRICE"
+"from bookdetails"
+"inner join orderdetails"
+"ON BOOKDETAILS.BOOKID=ORDERDETAILS.BOOKID"
+"Where Orderdetails.username ='"+username+"'");
ResultSet rs=ps.executeQuery();
我收到此异常:
>java.sql.SQLSyntaxErrorException: ORA-00923: FROM keyword not found where expected
为什么会发生这种情况?如果 sqlplus 执行此操作没有任何问题,那么为什么会在程序中抛出异常?
最佳答案
在您要连接的行的开头放置空格以在 Java 中创建查询,否则您要连接的行将一起运行查询,如下所示:
select Bookdetails.TITLE,Bookdetails.PRICEfrom bookdetailsinner join orderdetails...
当你想要的时候
select Bookdetails.TITLE,Bookdetails.PRICE from bookdetails inner join orderdetails...
关于java - 查询在 SQL*Plus 上运行但不在 jdbc 程序中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23700376/