【问题标题】:JDBC Mixed Case Table and Column NamesJDBC 混合大小写表和列名
【发布时间】:2015-05-26 03:13:55
【问题描述】:

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

【问题讨论】:

  • 你试过\"吗?

标签: java jdbc db2


【解决方案1】:

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

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

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

【讨论】:

  • 我会被诅咒的。它就像一个魅力。谢谢一百万!
猜你喜欢
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 2015-02-24
  • 2012-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多