java - 查询在 SQL*Plus 上运行但不在 jdbc 程序中运行

标签 java sql jdbc exception oracle11g

我在 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/

相关文章:

java - Java 中 'v_plateno' 中的未知列 'where clause'

java - 使用 jdbc 从 mssql 存储过程获取结果

java - 如何在 Long 类型属性的 Sql 数据实现中传递 NULL 值?

mySQL 按功能分组显示缺少数据

Mysql 查询从另一个表中的值列表中获取值

mysql - SQL联合查询需要添加到

java - 使用 ojdbc6 驱动程序通过 jdbc 连接到 Oracle 8i 数据库时出错

java - 如何在 Andengine 场景中居中背景

java - 无法使 jpa 与 glassfish 和 mysql 一起工作

java - 在 RabbitMQ 上的多个节点上定义队列