-1

说我的查询是

select * from table_a where pk=1;

如果使用 PreparedStatement 从 Java 运行此查询(带分号),则SqlExpection抛出 a。我正在使用 Oracle 10g 和 java 5。

我的问题是:虽然查询是有效的,为什么在从 java 准备好的语句中执行查询时会发生 SqlException(ORA-00911: invalid character) ?

4

2 回答 2

3

语句终止符不是语句本身的一部分。JDBC API 旨在执行单个语句,因此不应终止语句。

对于大多数数据库,语句终止符不是语句语法的一部分,而是实际上是 CLI 的一个工件(它需要知道查询何时实际完成以发送到服务器)。

于 2013-08-28T11:55:14.980 回答
0

此行为取决于您使用的数据库驱动程序。Java PreparedStatement 将把这个以分号(;) 终止的查询原样发送给驱动程序。这取决于数据库是否理解sql 查询终止。

于 2013-08-28T11:55:16.560 回答