说我的查询是
select * from table_a where pk=1;
如果使用PreparedStatement从Java运行此查询(使用分号),则抛出SqlExpection
。
我使用的是Oracle 10g和java 5。
我的问题是:虽然查询是有效的,但是为什么在从java预处理语句执行查询时发生了SqlException(ORA-00911:无效字符)?
答案 0 :(得分:2)
语句终结符不是语句本身的一部分。 JDBC API旨在执行单个语句,因此不应终止语句。
对于大多数数据库,语句终止符不是语句语法的一部分,但实际上是CLI的工件(需要知道查询何时实际完成才能发送到服务器)。
答案 1 :(得分:0)
此行为取决于您使用的数据库驱动程序。 Java PreparedStatement会将此查询以分号(;)的形式发送给驱动程序。它依赖于数据库是否理解sql查询终止。