2011-09-08 57 views
-1

我有一個下拉列表,它包含表中所有列的名稱。當用戶選擇一個特定的列名並輸入一個特定的值來搜索兩個不同的日期時,我得到這些信息並更新表格,如下所示。在更新Java中的Oracle表之前獲取計數

但是在更新之前,我想提示一個對話框詢問用戶「這多行將被更新,你想這樣做嗎?」。我可以修改此代碼中的某些內容以在更新之前獲取該計數,還是有更好的方法來執行此操作?

sql.append(" UPDATE Table_jack "); 
sql.append(" set date = to_date('" + this.getNewDate() + "','MM/DD/YYYY')"); 
if ((this.getSelectedDDL() != null)&& (this.getSelectedDDL().equals("1"))){ 
    sql.append(" where id_nbr =" + this.getValue() + "'"); 
    sql.append(" and date between to_date('" + this.getDateFrom() + "','MM/DD/YYYY') and to_date('" + this.getDateTo() + "','MM/DD/YYYY')"); 
} 

if ((this.getSelectedDDL() != null)&& (this.getSelectedDDL().equals("2"))){ 
    sql.append(" where name =" + this.getValue() + "'"); 
    sql.append(" and date between to_date('" + this.getDateFrom() + "','MM/DD/YYYY') and to_date('" + this.getDateTo() + "','MM/DD/YYYY')"); 
} 

ResultSet rset = db.executeQuery(sql.toString(),true); 

回答

1

在發出更新之前,不要嘗試計算一次計數,而是在發出COMMIT(或ROLLBACK)之前計算實際更新的行數並將其顯示給用戶。

Statement.executeUpdate方法返回UPDATE語句修改的行數。如果您使用的是executeQuery而不是executeQuery,則可以從UPDATE聲明中獲得行計數。然後,您可以在結束交易之前將其呈現給用戶。

1

您將不得不建立並運行單獨的select count(*)查詢以獲取要更新的行數。數據可能會在您執行select count(*)和更新表格之間發生變化。如果這是一個問題,您需要在查詢期間鎖定表格。