簡體   English   中英

PreparedStatement executeBatch

[英]PreparedStatement executeBatch

我正在嘗試使用准備好的語句的executeBatch功能。 在返回的數組中,-2中的所有值。 誰能告訴我該值的含義是什么?

索引0處的值為= -2
索引1的值為= -2
索引2的值為= -2
索引3的值為= -2
索引4的值為= -2
索引5的值為= -2

在數據庫中,所有行均已正確插入。

謝謝SD

這意味着SUCCESS_NO_INFO

從java.sql.Statement中:

/**
 * The constant indicating that a batch statement executed successfully
 * but that no count of the number of rows it affected is available.
 *
 * @since 1.4
 */
int SUCCESS_NO_INFO = -2;

您可以使用這些常量來檢查何時獲得所需的響應。 以您的情況看來,所有呼叫均已成功。 但是,沒有其他信息可以返回(例如:受影響的行)

它還取決於您使用的數據庫版本。 如果得到的-2表示SUCCESS_NO_INFO,則必須使用Oracle 11g。 Oracle 11g的一個問題是,即使沒有行更新,它仍將返回-2。 或者,如果沒有刪除任何行,它將仍然返回-2。

在Oracle 12c中,executeBatch的響應得到增強。 就像您觀察到-2或-3常數數組一樣。 -2用於成功執行,-3用於失敗。 現在使用12c,它是一個整數數組,實際行受sql語句影響。 例如[2,3,0,1,10 ...]。 告訴兩行的第一個索引受到執行第一個sql的影響,第二個sql受到影響的3行,依此類推...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM