JDBC混合大小写表和列名称

时间:2015-03-23 07:24:12

标签: java jdbc db2

在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)。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

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

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

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