2016-09-14 31 views
1

據我所知,可以滾動的ResultSet的語句對象如下所示。Scrolable ResultSet(JDBC)的createStatement參數之間的區別

Statement statement = connection.createStatement(P1, P2); 

這裏P1可以採取

ResultSet.TYPE_SCROLL_SENSITIVE 
ResultSet.TYPE_SCROLL_INSENSITIVE 

和P2可採取

ResultSet.CONCUR_READ_ONLY 
ResultSet.CONCUR_UPDATABLE 

SCROLL_SENSIVITE或INSENSITIVE表明, 的ResultSet的更新用是否會影響到實際的數據庫或沒有。 (種類的READ_ONLY或可更新)

所以這兩個參數是有點類似,我覺得他們是爲了相同的目的實現。

他們有什麼不同或我在這裏失去了一些東西?

+0

@Mark抱歉沒有得到。哪部分似乎不正確?雖然從書上得到了上述內容。 – Biswajit

+0

這個引用是完全錯誤的,那不是'TYPE_SCROLL_SENSITIVE' /'TYPE_SCROLL_INSENSITIVE'的意思;那麼引用的來源是什麼? –

+0

除了'P1'還需要'TYPE_FORWARD_ONLY',它可能仍然是隻讀或可更新的... –

回答

4

第二個參數CONCUR_*確定是否可以通過ResultSet修改數據庫。 TYPE_SCROLL_(IN)SENSITIVE決定在滾動ResultSet時是否看到對底層行進行的修改。所以INSENSITIVE提供了一個「快照」視圖的結果,他們永遠不會改變。 SENSITIVE提供了一個「實時」視圖,因此如果您長時間滾動搜索結果,您可以看到與查詢最初返回的值完全不同的值。

相關,但他們是「反面」。

+2

用「** by others **」或其他類似的詞語來澄清第二句。 – Andreas

+0

不一定是其他的,它也可以是關於你自己在結果集外進行的更改(例如,在同一事務中使用另一個語句)。 –

相關問題