有没有办法只转义保留字的列?
例如,我想使用java生成以下语句:
create table person(id int, name varchar(255), "year" int);
请注意,“年份”必须被转义,因为它是一个保留字?有没有办法确定字符串是否是保留字?
我不只是逃避所有列的原因是因为我宁愿让查询看起来像这样:
select id, name, "year" from person
而不是:
select "id", "name", "year" from person
答案 0 :(得分:2)
从通用JDBC的角度来看,有一种方法可以使用SQL:2003关键字列表(您需要自己获取)+ DatabaseMetaData.getSQLKeywords()
的结果来确定关键字:
检索所有此数据库的SQL关键字的逗号分隔列表,这些关键字不是SQL:2003关键字。
但是,这取决于JDBC驱动程序中的关键字列表是完整的还是最新的,但情况并非总是如此。我不知道Derby是否属于这种情况。如果您正在编写通用软件,最好总是引用以避免麻烦。
计划在JDBC 4.3中包含引用对象名称的功能(给定一个字符串,它将按原样返回字符串(不需要引用),必要时引用,或者如果对象引发 <?php while($row=$res->fetch_array()): ?>
<tr>
<td><?= $row['actor_id'] ?></td>
<td><a href="?del=<?= $row['actor_id'] ?>" onclick="return confirm('sure to delete !'); " >delete</a></td>
</tr>
<?php endwhile ?>
名称无效或无法引用)。这不是最终的IIRC,然后需要等待驱动程序供应商实现它..