0

私の Web サービスには、作成時に Sqlite データベースへの接続を開くデータベース アダプターがあります。

public DatabaseAdapterJava(Database database)
{           
   try 
   {
      exceptionController = new ExceptionControllerJava();

      // establish a connection to the database
      Class.forName(database.getDatabaseClass());
      conn = DriverManager.getConnection(database.getDatabasePath());
      conn.setAutoCommit(true);
   }
   catch(ClassNotFoundException e)
   {
      exceptionController.logException(this.toString(), "DatabaseAdapterSqlite", e.getMessage(), false);
   }
   catch(SQLException e)
   {
      exceptionController.logException(this.toString(), "DatabaseAdapterSqlite", e.getMessage(), false);
   }                
}

これはうまく機能します。または、少なくとも機能しました。しかし最近、2回目以降のデータベースへの呼び出しでnull接続例外が発生し始めました。

例えば:

int user_id = dbadapter.createUser(user);

//do something...

int user_records_affected = dbadapter.updateUser(user);

次に、データベースへの次のステートメントが実行されると、接続が閉じられます。

int other_id = dbadapter.createLogRecord(log);

私の明示的な同意なしに、データベース接続が閉じられているようです。

接続を閉じるにはどうすればよいですか?

create メソッドと update メソッドは、以下に渡される文字列 sql ステートメントを単純にアセンブルします。

@Override
public boolean executeSQL(String sql) {

    try{

        cm = conn.createStatement();
        cm.execute(sql);            

        return true;                    

    }catch(SQLException e){
        ExceptionMessage = "SQLException: "+e.getMessage();
        return false;
    }catch(Exception e){
        **ExceptionMessage = "Exception: "+e.getMessage();**
        return false;
    }


}

以下を返す例外パスを強調表示しました。

ExceptionMessage = 例外: Null

4

0 に答える 0