是否有一种方法仅转义保留字的列?
例如,我想使用java生成以下语句:
create table person(id int, name varchar(255), "year" int);
注意到“年份”必须转义,因为它是一个保留的单词?是否有方法确定字符串是否为保留字?
我之所以不直接转义所有列,是因为我更希望查询如下所示:
select id, name, "year" from person
而不是这样:
select "id", "name", "year" from person
发布于 2016-01-26 02:33:45
从一般JDBC的角度来看,有一种方法可以使用SQL:2003关键字列表(您需要自己获得)+ DatabaseMetaData.getSQLKeywords()
的结果来确定关键字。
检索此数据库的所有SQL关键字的逗号分隔列表,这些关键字也不是SQL:2003关键字。
但是,这取决于JDBC驱动程序中的关键字列表是完整的和最新的,情况并不总是如此。我不知道德比的情况是否如此。如果您正在编写通用软件,最好总是引用,以避免麻烦。
有计划在JDBC4.3中包含引用对象名称的功能(如果给定一个字符串,它将按原样返回字符串(不需要引用),必要时以引号引用,如果对象名称无效或不可能引用,则抛出SQLException
)。这不是最终的IIRC,然后需要等待驱动程序供应商来实现它。
https://stackoverflow.com/questions/35002072
复制