2013-08-28 19 views
-1

说我的查询是查询终止与分号(;)获得SQLEXCEPTION和过程不会终止

select * from table_a where pk=1; 

如果使用PreparedStatement的从Java运行此查询(用分号),然后SqlExpection被抛出。 我正在使用Oracle 10g和java 5.

我的问题是:尽管查询是有效的,为什么SqlException(ORA-00911:无效字符)发生在查询时执行java prepared statement?

+1

你正在使用哪个数据库? –

+0

你的问题是什么? –

+0

您不需要终止准备好的语句。如果你省略分号,它会起作用吗?还有什么是例外。我敢肯定它并没有说只是“SqlException” – NeplatnyUdaj

回答

1

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

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

0

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