我不是那么进入数据库而且我在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 对象的行。
那么,我该如何正确处理这种情况呢?我如何执行查询?
答案 0 :(得分:1)
以下是如何做到这一点:
// updateCount contains the number of updated rows
int updateCount = statment.executeUpdate(sql);
答案 1 :(得分:0)
您正在寻找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)
答案 2 :(得分:0)
如果您的方法重新获得了两个变量,例如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;
}