1

我必须处理一些作为带引号的 SQL 字符串传入的参数,然后再次引用它。我想知道 Hibernate 或 JDBC 或一些常见的 Java 库中是否有任何实用程序可以执行取消引用位?

(否则我想我可以做到str.replace("''","'")。这是正确的吗?)

编辑:

只是一些背景。我正在尝试向 Hibernate 添加功能。我覆盖的 Hibernate 类将其参数作为带引号的字符串接收。我无法访问为绑定变量提交的原始参数(无需重写许多 Hibernate 类)。

4

1 回答 1

2

只是不要引用String对象。

您的设计有问题,您不应该收到已经引用的它,如果在任何情况下您需要引用它(避免这种情况),请在使用它之前进行。

对于 JDBC 端,您始终可以执行以下操作,因此您不需要 SQL 引用的字符串:

String query ="select myColumn from MyTable where fullname = ?";
PreparedStatement stm = c.prepareStatement(query);
stm.setString(1, "Garis M. Suero");

以简单的方式设计您的软件是一种非常好的做法,以便在开发人员对您的软件进行编码时减少未来的混乱和错误。

例如,如果您从第三方软件接收此信息,您可以创建一个对象,该对象将获取字符串并将其转换为正确的值,并且可能有两种方法,一种是 'getValue() and another:getQuotedValue()`

于 2013-03-08T18:04:08.333 回答