2011-07-13 10 views
1

は、Javaのサンプルコードです:私はinsertRow()を使用すべき 1:acceptChanges()でinsertRow()を使用する必要がありますか?ここ

try { 
     /* create connection */ 
     Connection conn = DriverManager.getConnection(url, username, password); 
     Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); 

     /* create a CachedRowSet */ 
     CachedRowSet cachedResult = new com.sun.rowset.CachedRowSetImpl(); 

     /* set connection information */ 
     cachedResult.setUrl(url); 
     cachedResult.setUsername(username); 
     cachedResult.setPassword(password); 

     ResultSet result = stmt.executeQuery("SELECT * FROM tbl"); 

     /* populate CachedRowSet */ 
     cachedResult.populate(result); 

     /* close connection */ 
     result.close(); 
     stmt.close(); 
     conn.close(); 

     /* now we edit CachedRowSet */ 
     while (cachedResult.next()) { 
      if (cachedResult.getInt("id") == 12) { 
       cachedResult.moveToInsertRow(); 

       /* use some updateXXX() functions */ 

       cachedResult.insertRow(); 
       cachedResult.moveToCurrentRow(); 
      } 
     } 
    } catch (SQLException e) { 
     e.printStackTrace(); 
} 

今私の質問はこれでしょうか?代わりにacceptChanges()を使用する必要がありますか?多分両方? 2.このコードにはどこにacceptChanges()を入れますか?

答えて

2

基本データソースに変更を反映する準備ができたら、acceptChanges()を呼び出します。ただし、多数の更新/挿入(複数行)を行っている場合は、updateRow()insertRow()がすべて実行された後にacceptChanges()を呼び出す必要があります。 acceptChanges()を呼び出すと、データベースに実際に接続することがあります。これは、しばしば高価になることがあります。したがって、複数行の各insertRow/updateRowの後に毎回呼び出すことは効率的ではありません。

whileコードの後に​​、acceptChanges()を入力します。その理由は、私が上記で述べたことです。whileのブロック内のすべての更新がcacheResultに対して行われた後に、データベース接続を1回だけ作成します。

関連する問題