【发布时间】:2011-08-10 06:13:33
【问题描述】:
我正在对带有 postgresql 数据库的 Web 应用程序的家庭滚动 QueryBuilder 类进行最后润色。它对所有查询使用PreparedStatement,并防止 SQL 注入。
但是,我想要一种“快速而肮脏”的方式来表示 QueryBuilder 及其 toString() 方法,仅用于调试目的。该方法将按照通常传递给PreparedStatement 的方式组装查询字符串,然后简单地将字符串中的每个? 替换为其对应的单引号值。 toString() javadoc 将警告其他开发人员这是一个不安全的近似值,仅用于调试等。
我知道这些值的单引号应该加倍(即O'Connell 转义为O''Connell)。是否还有其他我忘记的特殊字符需要处理?我寻找了类似的问题,但只发现有人被骂使用PreparedStatement(他们应该这样做,让记录显示)。
编辑:不想使用第三方工具来完成这个特定的任务,我真的只想在这里快速而肮脏。不过,我确实很欣赏这些链接 - 我可能会考虑将它们用于其他用途。
最后编辑:感谢大家的帮助。我只想为任何从谷歌偶然发现这里的人补充一点,不要使用这些技巧来访问数据库,使用PreparedStatement。
【问题讨论】:
标签: java sql postgresql escaping