java - 带有特殊字符的 Java SQL 表名
问题描述
我有一个代码,它可以即时创建表格。这些表用于存储和获取不同进程的数据。
问题:表名是用“&”等特殊字符创建的。MySQL 允许使用特殊字符的表名。不是 MySQL 的问题。
当我使用 DBUtils 从此类表中查询数据时,我在特殊字符处出现异常。如果我使用的是普通的 jdbc,那么我可以逃脱那些并且可以处理数据。但是 DButils 不允许转义这些字符。
我尝试在表名中添加双引号并尝试处理,但问题仍然存在。有什么建议吗??
java.sql.SQLException: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right
syntax to use near '-AO_I ( Datetime, L, ' at line 1
at org.apache.commons.dbutils.AbstractQueryRunner.rethrow(AbstractQueryRunner.java:392)
at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:491)
at org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:404)
删除所有列名和详细表名。表名是“NRI-AO_I” 代码将数据添加到数百个表中,但很少有失败。这些表名在表名中有特殊字符。名称中带有“&”或“-”的表会失败。
解决方案
在表名中使用特殊字符是一个坏主意,但如果您没有其他选择,请用反引号引用您的模棱两可或“特殊”的表名。例如:
select * from `NRI-AO_I`
推荐阅读
- javascript - 电子.js | ipcRenderer 和 ipcMain 导致白屏/黑屏
- python - 为什么 tape.gradient 在我的 Sequential 模型中不返回所有内容?
- javascript - 保持复选框选中角度
- sql - 用另一列 postgresql 中的值替换字符串的一部分
- bash - 如何使用 sort 或 awk 对具有相同数量字段但一个字段的值不同的行进行排序?
- docker - 在 Docker 容器中使用 JMeter Prometheus 插件(连接被拒绝)
- python-3.x - 在 Python 中将 XML 文件转换为 CSV 文件
- php - 如何在其方法中自动反映实体字段的变化?
- r - 寻找跨多维数组实现 logSumExp 的更快方法
- c# - 我在 Unity 中删除了“材料”,现在添加到球体的脚本不起作用