【问题标题】:H2 JDBC Prepared Statement ExceptionH2 JDBC 准备好的语句异常
【发布时间】:2017-04-12 17:56:17
【问题描述】:

我正在尝试使用 TABLE_CATALOG 和 TABLE_SCHEMA 的预准备语句和参数选择默认模式“PUBLIC”中的所有表。当我创建一个准备好的语句时,我从系统返回一个错误,它没有任何意义。如果我在没有 TABLE_SCHEMA 的情况下指定 TABLE_CATALOG,它会完美运行。此外,如果我指定没有 TABLE_CATALOG 的 TABLE_SCHEMA 它也可以正常工作。我在这里做错了吗?

SELECT 
    TABLE_CATALOG, 
    TABLE_SCHEMA, 
    TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE
    TABLE_CATALOG = ?, TABLE_SCHEMA = ?

线程“main”org.h2.jdbc.JdbcSQLException 中的异常:SQL 中的语法错误

statement "SELECT 
    TABLE_CATALOG, 
    TABLE_SCHEMA, 
    TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE
    TABLE_CATALOG = ?,[*] TABLE_SCHEMA = ?"; SQL statement:
SELECT 
    TABLE_CATALOG, 
    TABLE_SCHEMA, 
    TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE
    TABLE_CATALOG = ?, TABLE_SCHEMA = ? [42000-193]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
at org.h2.message.DbException.get(DbException.java:179)
at org.h2.message.DbException.get(DbException.java:155)
at org.h2.message.DbException.getSyntaxError(DbException.java:191)
at org.h2.command.Parser.getSyntaxError(Parser.java:530)
at org.h2.command.Parser.prepareCommand(Parser.java:257)
at org.h2.engine.Session.prepareLocal(Session.java:561)
at org.h2.engine.Session.prepareCommand(Session.java:502)
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1203)
at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:73)
at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:287)
at com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:310)
at com.zaxxer.hikari.pool.HikariProxyConnection.prepareStatement(HikariProxyConnection.java)

【问题讨论】:

  • 我刚刚意识到我忘记了 WHERE 子句中的 AND。

标签: java jdbc h2


【解决方案1】:

这个

TABLE_CATALOG = ?, TABLE_SCHEMA = ?

应该是

TABLE_CATALOG = ? AND TABLE_SCHEMA = ?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2013-12-06
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多