繁体   English   中英

JDBC混合大小写表和列名

[英]JDBC Mixed Case Table and Column Names

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM