【问题标题】:Can I use named parameters in an INSERT PreparedStatement? [duplicate]我可以在 INSERT PreparedStatement 中使用命名参数吗? [复制]
【发布时间】:2017-01-28 14:09:26
【问题描述】:

我想提个建议,那我一般是这样加载数据库的:

PreparedStatement prep = con.prepareStatement ("INSERT INTO TABLE (NAME, LAST NAME) VALUES (?,?)");
             prep.setString (1, name);
             prep.setString (2, last name);
             prep.executeUpdate ();

我想有一种方法可以避免指明数据引用索引,即我想把数据乱七八糟地发送到 PreparedStatement 没有索引,我想发送数据,然后它将是设置正确字段的 API,它可以使用类似这样的东西(注意我用名字颠倒了姓氏,首先发送姓氏,API 应该将其添加到第二个字段)

PreparedStatement prep = con.prepareStatement ("INSERT INTO TABLE (NAME, LAST NAME) VALUES (?,?)");
             prep.setString (surname, name);
             prep.setString (NAME, name);
             prep.executeUpdate ();

【问题讨论】:

    标签: java sql jdbc prepared-statement


    【解决方案1】:

    查看来自 ORACLE 的 JAVA PreparedStatement 文档。没有这样的方法。

    可用的方法大致如下:

    set...(int parameterIndex, SomeObject variableName)

    【讨论】:

      【解决方案2】:

      JDBC 标准不支持PreparedStatement 中的命名参数标记,但是,一些 JDBC 驱动程序的供应商实现确实支持它们——这是DB2 JDBC extension 的一个示例。检查特定数据库供应商驱动程序实施的文档。

      【讨论】:

        【解决方案3】:

        jdbc 本身不支持准备好的语句中的命名参数。我发现 this answer 可能会回答你的问题。

        根据您使用的数据库(Oracle、MySQL 等),您可能需要稍微不同的工具。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-24
          • 2013-08-06
          • 2014-11-02
          • 1970-01-01
          • 2013-10-08
          • 2013-09-10
          • 1970-01-01
          • 2012-06-11
          相关资源
          最近更新 更多