具有特殊字符的Java SQL表名称

时间:2018-08-10 08:47:21

标签: java mysql apache-commons-dbutils

我有一个代码,可以动态创建表格。这些表用于存储和获取不同进程的数据。

问题:正在使用特殊字符(例如“&”和其他字符)创建表名。 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” 该代码将数据添加到数百个表中,但很少成功。这些表名在表名中具有特殊字符。名称中带有“&”或“-”的表将失败。

1 个答案:

答案 0 :(得分:1)

在表名中使用特殊字符是个坏主意,但是如果您没有其他选择,请在表名前后加上引号引起来。 例如:

select * from `NRI-AO_I`