在Java中,使用JDBC,是否有可能插入表名称和列混合的DB2表(或任何RDBMS)?例如,我想执行如下的SQL:
insert into schemaname."TableName" ("ColumnName1", "ColumnName2") VALUES ('a', 'b')
所以我尝试将其放入如下格式中,用单引号代替上面显示的表名和列名的双引号:
Integer x = jdbcTemplate.update("insert into schemaname.'TableName' "
+ "('ColumnName1', 'ColumnName2') VALUES (?,?)",
new Object[] { col1, col2});
但是,这(以及我尝试过的任何其他格式)都会给我带来sql错误,这些错误似乎与我的语法有关(例如,DB2 SQL错误:SQLCODE = -204,SQLSTATE = 42704)。非常感谢任何帮助!
答案 0 :(得分:3)
单引号用于字符文字(又名“字符串”),不用于标识符。您需要使用双引号,就像在纯SQL中一样。但是在Java String中,您需要转义双引号:
jdbcTemplate.update("insert into schemaname.\"TableName\" "
+ "(\"ColumnName1\", \"ColumnName2\") VALUES (?,?)",
new Object[] { col1, col2});
这是使用带引号的标识符通常不是一个好主意的原因之一。