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);
   }                
}

这很好用,或者至少它确实有效。然而,最近我开始在第二次之后调用数据库时出现空连接异常。

例如:

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 = 异常:空

4

0 回答 0