如何在 Java 中执行更新查询?

How to perform an update query in Java?

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

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

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 对象中的行。

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

以下是您的操作方法:

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

您正在查找 statement.executeUpdate(),这将 return 受更新影响的行数。

int executeUpdate(String sql) throws SQLException

Executes the given SQL statement, which may be an INSERT, UPDATE, or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement.

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

如果您的方法接收到两个变量,例如 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;
  }