Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
说我的查询是
select * from table_a where pk=1;
如果使用 PreparedStatement 从 Java 运行此查询(带分号),则SqlExpection抛出 a。我正在使用 Oracle 10g 和 java 5。
SqlExpection
我的问题是:虽然查询是有效的,为什么在从 java 准备好的语句中执行查询时会发生 SqlException(ORA-00911: invalid character) ?
语句终止符不是语句本身的一部分。JDBC API 旨在执行单个语句,因此不应终止语句。
对于大多数数据库,语句终止符不是语句语法的一部分,而是实际上是 CLI 的一个工件(它需要知道查询何时实际完成以发送到服务器)。
此行为取决于您使用的数据库驱动程序。Java PreparedStatement 将把这个以分号(;) 终止的查询原样发送给驱动程序。这取决于数据库是否理解sql 查询终止。