【问题标题】:How to parametrize fields of a SELECT statement?如何参数化 SELECT 语句的字段?
【发布时间】:2012-05-04 13:37:25
【问题描述】:

有没有办法使用PreparedStatement 或其他实用程序对 SELECT 语句的字段进行参数化?

我的意思是这样的:

SELECT ?, ? FROM MY_TABLE WHERE ? = ?

【问题讨论】:

    标签: java jdbc prepared-statement


    【解决方案1】:

    不,JDBC 不允许您这样做。参数背后的想法是加快执行速度并避免 SQL 插入;参数化您选择的列对这两个目标都没有帮助。

    【讨论】:

    • 我也在使用 Spring Framework 和 JdbcTemplate... 这对我有帮助吗?
    • 不,据我了解,JdbcTemplate 采用“常规”SQL,并将其传递给 JDBC。您需要构建自己的 SQL 模板库 - 假设您的 SQL 语句大部分是“固定的”,并且在列列表和表达式中具有一定的灵活性,这应该不会太难。
    • @davioooh 就 JDBC 而言,它不允许您做更明智的事情,例如select * from mytable where myfield in (?),其中? 表示“in list”。他们强迫你为“in list”的每个元素添加一个问号,这会导致重复甚至基本的预设语句。
    • 有一个名为SQLind 的模板库似乎正是这样做的。你可能想看看。
    • 谢谢@edalorzo,但我希望使用普通的 JDBC 来实现这一点。我会避免只为此使用新框架。
    【解决方案2】:

    【讨论】:

    • 所以你建议这样做:"SELECT " + field1 + ", " + field2 + " FROM MY_TABLE" 对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多