2012-03-28 141 views
1

這是關於使用JDBC的sql更新語句。其實我正在研究一些我們曾經遇到的問題,這些問題都是在更新語句返回零時嘗試更新某一行時出現的。oracle Jdbc更新語句返回零

現在要說清楚,特定行更新聲明正在嘗試更新在表中存在。因此沒有找到記錄的可能性,因此沒有更新。

提到過,我的問題是,你看到或者是他們的任何其他可能性,其中更新可以返回零。我正在使用oracle jdbc驅動程序。所以oracle jdbc提到了任何可以通過更新語句返回零而不是找不到記錄的場景。

非常感謝, 阿米爾Mawia

+6

「所以沒有找到記錄的可能性」 - 這通常是剛剛說的*之前,「啊,*這是*爲什麼沒有找到記錄...」請顯示一些代碼。 – 2012-03-28 13:46:46

+0

我在服務器約束下不要共享代碼,儘管我可以說它非常平凡,獲得連接,創建預準備語句並執行它。希望你能欣賞我必須尊重的這種限制。 – mawia 2012-03-28 13:50:32

+0

不是真的,因爲你沒有提供如何檢查它是否真的發現一行的跡象。例如,如果將'UPDATE'更改爲'SELECT'並刪除新值(但否則不要觸及查詢),那麼您會*看到它的工作?根據我的經驗,這很可能是一個像查詢一樣普通的錯字... – 2012-03-28 14:03:39

回答

0

的executeUpdate

INT的executeUpdate() 拋出的SQLException

執行此PreparedStatement對象的SQL語句,該語句必須是一個SQL數據操作語言(DML)語句,如INSERT,UPDATE或DELETE;或者不返回任何內容的SQL語句,如DDL語句。

返回: :(1)對於不返回任何內容 SQL數據操縱語言(DML)語句(2)0 SQL語句的行數拋出: SQLException - 如果發生數據庫訪問錯誤;這種方法被稱爲在關閉的PreparedStatement或SQL語句返回ResultSet對象

只是說,DOC規定:

「請注意,當executeUpdate的返回值是0,這可能意味着一二東西:

執行的語句是一個更新語句,它影響零行。 執行的語句是DDL語句。「

0

對不起,我不知道如何才能發表評論呢,所以......

從甲骨文:

http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

注意,當executeUpdate的返回值是0,它可能意味着以下兩種情況之一:

* The statement executed was an update statement that affected zero rows. 
* The statement executed was a DDL statement. 

所以看起來Update語句可能會以某種你沒有想到的方式變得更糟。考慮到沒有拋出異常,我會認爲是這種情況。如果這是可重複的,您應該能夠監視在服務器端發送的SQL,並查看缺少的內容。