Java PreparedStatement在SQL查询中不希望将小写字符串名称传递给区分大小写的PostgreSQL数据库
我使用Java PreparedStatement对象将行插入Postgres数据库表。(我的代码如下:) 但是,当我执行上述代码时,我得到了错误(通过捕获的SQLException的toString()): org.postgresql.util.PSQLException:错误:关系 “表格\uuufinal\uurecords”不存在 其中,上面代码中指定的每个大写字符在抛出异常的文本中显示为小写 如果我手动将数据库表重命名为全小写,则错误将被消除,而无需更改代码。但是,它被替换为: org.postgresql.util.PSQLException:错误:的“日期时间”列 关系“表\最终\记录”不存在 一个明显的解决办法是手动将Postgres数据库中所有表名和列名中的所有大写字符转换为小写,但是,我想知道如何强制这些语句区分大小写,以便正确识别和更新带有大写字符的PostgreSQL数据库表和列名Java PreparedStatement在SQL查询中不希望将小写字符串名称传递给区分大小写的PostgreSQL数据库,java,sql,postgresql,jdbc,Java,Sql,Postgresql,Jdbc,我使用Java PreparedStatement对象将行插入Postgres数据库表。(我的代码如下:) 但是,当我执行上述代码时,我得到了错误(通过捕获的SQLException的toString()): org.postgresql.util.PSQLException:错误:关系 “表格\uuufinal\uurecords”不存在 其中,上面代码中指定的每个大写字符在抛出异常的文本中显示为小写 如果我手动将数据库表重命名为全小写,则错误将被消除,而无需更改代码。但是,它被替换为: or
谢谢您可以通过引用查询中的标识符来解决此问题:
PreparedStatement st = conn.prepareStatement(
"INSERT INTO \"TABLE_Final_Records\"(\"Datetime\", \"Number_n\", \"Fraction_f\")"
+ " VALUES (?,?,?)"
);
但底线是:您遇到的问题表明,您的数据库表和列是用双引号围绕idenfiers创建的。通常,您希望在声明标识符时避免引用它们,因为这会使它们区分大小写—正如您所经历的,这会使编写查询变得冗长乏味
PreparedStatement st = conn.prepareStatement(
"INSERT INTO \"TABLE_Final_Records\"(\"Datetime\", \"Number_n\", \"Fraction_f\")"
+ " VALUES (?,?,?)"
);