带有特殊字符的java sql表名

xuo3flqw  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(352)

我有一个代码,可以动态创建表。这些表用于存储和获取不同进程的数据。
问题:正在使用“&”等特殊字符创建表名。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”。代码将数据添加到数百个表中,但很少有表失败。这些表名在表名中有特殊字符。名称中有“&”或“-”的表将失败。

zbwhf8kr

zbwhf8kr1#

在表名中使用特殊字符是个坏主意,但如果没有其他替代方法,请在表名的后面加一个勾号来引用不明确或“特殊”的表名。例如:

select * from `NRI-AO_I`

相关问题