CREATE LINKED TABLE 不使用 PreparedStatement

CREATE LINKED TABLE not working with PreparedStatement

我正在尝试 运行 以下 PreparedStatement:

final PreparedStatement ps = conn.prepareStatement("CREATE LINKED TABLE IF NOT EXISTS " + linkedName + "(?, ?, ?, ?, 'ROADS', ?)");

但是当调试器 运行 超过前一行时,我得到错误:

Syntax error in SQL statement "CREATE LINKED TABLE IF NOT EXISTS ROAD_TABLE_LINKED(?,[*] ?, ?, ?, 'ROADS', ?)"; expected "string"; SQL statement: CREATE LINKED TABLE IF NOT EXISTS ROAD_TABLE_LINKED(?, ?, ?, ?, 'ROADS', ?) [42001-199]

是否不能将 PreparedStatement 与 CREATE LINKED 一起使用 TABLE?

编辑:如果我使用普通语句并插入参数,它工作正常。

很遗憾,您不能在 H2 的 DDL 命令中使用参数 (?)。您需要用字符串文字替换它们。

Statement s = connection.createStatement();
s.execute("CREATE LINKED TABLE IF NOT EXISTS \""
        + linkedName.replaceAll("\"", "\"\"")
        + "\"('', '"
        + url.replaceAll("'", "''")
        + "', '"
        + user.replaceAll("'", "''")
        + "', '"
        + password.replaceAll("'", "''")
        + "', '"
        + schema.replaceAll("'", "''")
        + "', '"
        + table.replaceAll("'", "''")
        + "')");