JDBC 大小写混合 Table 和列名

JDBC Mixed Case Table and Column Names

是否可以在 Java 中使用 JDBC 插入 DB2 table(或任何 RDBMS),其中 table 名称和列是大小写混合的?例如,我想像这样执行 SQL:

insert into schemaname."TableName" ("ColumnName1", "ColumnName2") VALUES ('a', 'b')

所以我尝试将其放入如下格式,用单引号代替用于 table 的双引号和上面显示的列名:

Integer x = jdbcTemplate.update("insert into schemaname.'TableName' "
                        + "('ColumnName1', 'ColumnName2') VALUES (?,?)",
                        new Object[] { col1, col2});

但是,这个(以及我尝试过的任何其他格式)给我 sql 错误,这些错误似乎与我的语法有关(例如,DB2 SQL 错误:SQL代码=-204,SQL状态=42704)。非常感谢任何帮助!

单引号用于字符文字(又名 "strings"),不适用于标识符。您需要像在 SQL 中一样使用双引号。但是在 Java 字符串中,您需要转义双引号:

jdbcTemplate.update("insert into schemaname.\"TableName\" "
                    + "(\"ColumnName1\", \"ColumnName2\") VALUES (?,?)",
                    new Object[] { col1, col2});

这就是为什么使用带引号的标识符通常不是一个好主意的原因之一。