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});
这就是为什么使用带引号的标识符通常不是一个好主意的原因之一。
是否可以在 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});
这就是为什么使用带引号的标识符通常不是一个好主意的原因之一。