簡體   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