数据库不适用于平板电脑3.1

时间:2014-02-03 10:14:28

标签: android sqlite tablet

该应用适用于除平板电脑以外的所有设备。它总是给出错误,我没有关闭数据库,但我确定我每次都关闭。我像这样打开它

objDB = new dbManage(Activity.this);
        Items = objDB.select_Users();
        objDB.CloseDataBase();

这是我的选择陈述

public ArrayList<Items_OnlineUsers> select_Users() {

    ArrayList<Items_OnlineUsers> arrayList_ = new ArrayList<Items_OnlineUsers>();
    String qry = "select * from Online left outer join user_ on Online.u_id = user_.id_ ";
    Cursor cursor = sqlDB.rawQuery(qry, null);

    while (cursor.moveToNext()) {

        Items_OnlineUsers u = new Items_OnlineUsers();

        u.setId_(cursor.getLong(0));
        u.setStatus_(cursor.getInt(1));
        u.setRand_(cursor.getLong(3));
        u.setName_(cursor.getString(4));

        arrayList_.add(u);
    }
    cursor.close();
    return arrayList_;

}

这是logcat

02-03 11:47:42.134: E/AndroidRuntime(1241): java.lang.RuntimeException: An error occured while executing doInBackground()
02-03 11:47:42.134: E/AndroidRuntime(1241): at android.os.AsyncTask$3.done(AsyncTask.java:266)
02-03 11:47:42.134: E/AndroidRuntime(1241): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
02-03 11:47:42.134: E/AndroidRuntime(1241): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
02-03 11:47:42.134: E/AndroidRuntime(1241): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
02-03 11:47:42.134: E/AndroidRuntime(1241): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
02-03 11:47:42.134: E/AndroidRuntime(1241): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
02-03 11:47:42.134: E/AndroidRuntime(1241): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:574)
02-03 11:47:42.134: E/AndroidRuntime(1241): at java.lang.Thread.run(Thread.java:1020)
02-03 11:47:42.134: E/AndroidRuntime(1241): Caused by: java.lang.NullPointerException
02-03 11:47:42.134: E/AndroidRuntime(1241): at android.database.sqlite.SQLiteStatement.releaseAndUnlock(SQLiteStatement.java:283)
02-03 11:47:42.134: E/AndroidRuntime(1241): at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:116)
02-03 11:47:42.134: E/AndroidRuntime(1241): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1737)
02-03 11:47:42.134: E/AndroidRuntime(1241): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1610)
02-03 11:47:42.134: E/AndroidRuntime(1241): at com.ashabe.database.dbManage.add_new_Post(dbManage.java:1395)  
02-03 11:47:42.134: E/AndroidRuntime(1241): at com.ashabe.utilityfunction.JsonDecoding.install_JSON_WallPost(JsonDecoding.java:3586)
02-03 11:47:42.134: E/AndroidRuntime(1241): at com.ashabe.www.LoginActivity$loginAsy.doInBackground(LoginActivity.java:232)
02-03 11:47:42.134: E/AndroidRuntime(1241): at com.ashabe.www.LoginActivity$loginAsy.doInBackground(LoginActivity.java:1)
02-03 11:47:42.134: E/AndroidRuntime(1241): at android.os.AsyncTask$2.call(AsyncTask.java:252)
02-03 11:47:42.134: E/AndroidRuntime(1241): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
02-03 11:47:42.134: E/AndroidRuntime(1241): ... 4 more
02-03 11:47:43.464: E/SQLiteDatabase(1241): close() was never explicitly called on database '/data/data/com.ashabe.www/databases/ashabedb' 
02-03 11:47:43.464: E/SQLiteDatabase(1241): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
02-03 11:47:43.464: E/SQLiteDatabase(1241): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1980)
02-03 11:47:43.464: E/SQLiteDatabase(1241): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:977)
02-03 11:47:43.464: E/SQLiteDatabase(1241): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:956)
02-03 11:47:43.464: E/SQLiteDatabase(1241): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1021)
02-03 11:47:43.464: E/SQLiteDatabase(1241): at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:734)
02-03 11:47:43.464: E/SQLiteDatabase(1241): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
02-03 11:47:43.464: E/SQLiteDatabase(1241): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:149)
02-03 11:47:43.464: E/SQLiteDatabase(1241): at com.ashabe.database.dbManage.open(dbManage.java:110)
02-03 11:47:43.464: E/SQLiteDatabase(1241): at com.ashabe.database.dbManage.<init>(dbManage.java:95)
02-03 11:47:43.464: E/SQLiteDatabase(1241): at com.ashabe.utilityfunction.JsonDecoding.install_JSON_WallPost(JsonDecoding.java:3585)
02-03 11:47:43.464: E/SQLiteDatabase(1241): at com.ashabe.www.LoginActivity$loginAsy.doInBackground(LoginActivity.java:232)
02-03 11:47:43.464: E/SQLiteDatabase(1241): at com.ashabe.www.LoginActivity$loginAsy.doInBackground(LoginActivity.java:1)
02-03 11:47:43.464: E/SQLiteDatabase(1241): at android.os.AsyncTask$2.call(AsyncTask.java:252)
02-03 11:47:43.464: E/SQLiteDatabase(1241): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
02-03 11:47:43.464: E/SQLiteDatabase(1241): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
02-03 11:47:43.464: E/SQLiteDatabase(1241): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
02-03 11:47:43.464: E/SQLiteDatabase(1241): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:574)
02-03 11:47:43.464: E/SQLiteDatabase(1241): at java.lang.Thread.run(Thread.java:1020)
02-03 11:47:49.254: E/SqliteCursor.cpp(1241): Invalid statement in fillWindow()

这是我的数据库助手

public class dbManage {
   private dataB obj;
   protected static SQLiteDatabase sqlDB;

   public dbManage(Context context) {
      obj = new dataB(context);

      try {
         open();
      } catch (SQLException e) {
         e.printStackTrace();
      }
     /**/
   }

   public void openDataBase(Context context) throws SQLException {
      sqlDB = obj.getWritableDatabase();
   }

   public void open() throws SQLException {
      sqlDB = obj.getWritableDatabase();
   }

   public void CloseDataBase() {
      obj.close();
      sqlDB.close();
   }
}

这是数据库

public class dataB extends SQLiteOpenHelper {
    static String dBname = "xxx";
    static int v = 1;

    public dataB(Context context) {
        super(context, dBname, null, v);
    }
}

0 个答案:

没有答案