【问题标题】:How to perform an update query in Java? [duplicate]如何在 Java 中执行更新查询? [复制]
【发布时间】:2015-03-16 14:33:05
【问题描述】:

我不太喜欢数据库,我在 Java 应用程序中遇到以下问题,该应用程序必须执行一个非常简单的查询来更新我的数据库表上的字段。

所以,原来的查询是这样的:

UPDATE coda_tx c SET c.FK_STATO = 2 WHERE c.PK_CODA = 62816; 

所以我已经实现了以下 Java 方法来实现上一个查询,这个:

public void updateStatus(int pkCoda, int newStatus) {

    String sql;

    StringBuffer sb = new StringBuffer();

    sb.append("UPDATE coda_tx c SET c.FK_STATO = ");
    sb.append(newStatus);
    sb.append(" WHERE c.PK_CODA = ");
    sb.append(pkCoda);

    sql = sb.toString();


    try {
        statment = connection.createStatement();
        ResultSet rs = statment.executeQuery(sql);
    } catch (SQLException e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    }
}

我唯一的疑问是关于执行查询的部分,这个:

statment = connection.createStatement();
ResultSet rs = statment.executeQuery(sql);

我认为这是错误的,因为实际上有 ResultSet 是一个用于通过 SELECT 操作检索行的对象。在这种情况下,我正在更新特定行的字段,而不是检索将主题放入 ResultSet 对象的行。

那么,我该如何正确处理这种情况呢?我该如何执行查询?

【问题讨论】:

  • 您正在寻找statement.execute(...)

标签: java database oracle jakarta-ee jdbc


【解决方案1】:

你可以这样做:

// updateCount contains the number of updated rows
int updateCount = statment.executeUpdate(sql);

【讨论】:

    【解决方案2】:

    您正在寻找statement.executeUpdate(),它将返回受更新影响的行数。

    int executeUpdate(String sql) 抛出 SQLException

    执行给定的 SQL 语句,可能是 INSERT、UPDATE 或 DELETE 语句或不返回任何内容的 SQL 语句,例如 SQL DDL 语句。

    参考:http://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#executeUpdate(java.lang.String)

    【讨论】:

      【解决方案3】:

      如果您的方法接收例如 fkStato 和 pkCoda 等两个变量,其中包含您想要的值,您可以进行简单查询:

      int fkStato=2;
      int pkCoda=62816;
      try
        {
      
          // create our java preparedstatement using a sql update query
          PreparedStatement ps = conn.prepareStatement(
            "UPDATE coda_tx c SET c.FK_STATO = ? WHERE c.PK_CODA = ?;");
      
          // set the preparedstatement parameters
          ps.setInt(1,fkStato);
          ps.setInt(2,pkCoda);
      
          // call executeUpdate to execute our sql update statement and returns number of rows affected
         int updateCount = ps.executeUpdate();
          ps.close();
        }
        catch (SQLException se)
        {
          // log the exception
          throw se;
        }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-10
        • 1970-01-01
        • 1970-01-01
        • 2018-05-08
        • 1970-01-01
        • 1970-01-01
        • 2017-04-29
        相关资源
        最近更新 更多