2016-09-14 22 views
1

私が知る限り、スクロール可能なResultSetのステートメントオブジェクトは、以下のように取得されます。ここでスクロール可能な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のupdationが実際のデータベースに影響を与えたりしませんか、を示しています。 (READ_ONLYまたはUpdatableの種類)

したがって、両方のパラメータは同じようなもので、同じ目的のために実装されているように感じられます。

どのように異なっているのですか、私はここで何かを逃していますか?

+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

"made by ** others **"などの第2文を明示してください。 – Andreas

+0

必ずしも他人である必要はなく、結果セットの外で自分で行った変更(たとえば、同じトランザクション内の別のステートメントの使用など)でもかまいません。 –