查询以分号(;)结束,获取SqlException并且进程不会终止

时间:2013-08-28 11:50:56

标签: java sql jdbc

说我的查询是

select * from table_a where pk=1;

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

我的问题是:虽然查询是有效的,但是为什么在从java预处理语句执行查询时发生了SqlException(ORA-00911:无效字符)?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

此行为取决于您使用的数据库驱动程序。 Java PreparedStatement会将此查询以分号(;)的形式发送给驱动程序。它依赖于数据库是否理解sql查询终止。

相关问题