2015-07-12 88 views
3

我已經從現有的數據庫,當用戶點擊每個項目填補一個ListView,其他支柱之一,應該顯示在第二活動(Like dictionary App閱讀現有的SQLite數據庫

但我不能執行任何疑問第二次活動。

我正在使用SqliteAssetHelper庫。

Database類:

public class MyDatabase extends SQLiteAssetHelper { 

private static final String DATABASE_NAME = "database.db"; 
private static final int DATABASE_VERSION = 1; 


public MyDatabase(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 

} 

在第一活動,ListView中從數據庫中填充:

private void fillFromDb() { 
    G.itemLists.clear(); 
    Cursor cursor = mydb.rawQuery("select * from test order by title limit 0,50 ", null); 
    while (cursor.moveToNext()) { 
     StructNote test1 = new StructNote(); 
     test1.title = cursor.getString(cursor.getColumnIndex("title")); 
     G.itemLists.add(test1); 
    } 
    cursor.close(); 
    mydb.close(); 
    adapter.notifyDataSetChanged(); 
    } 

,但問題是在所述第二活性;我無法執行任何查詢!

public class ActivityResult extends Activity { 

private MyDatabase MyDataBase; 
public SQLiteDatabase mydb; 


@Override 
protected void onResume() { 
    G.currentActivity = this; 
    super.onResume(); 
} 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.result); 

    Cursor cursor = mydb.rawQuery("SELECT * FROM test ", null); 
    while (cursor.moveToNext()) { 
     try { 
      Log.i("LOG", cursor.getString(cursor.getColumnIndex("title"))); 
     } 
     catch (Exception e) {} 
    } 
    cursor.close(); 
    mydb.close(); 

} 

} 

的logcat:NullPointerException

非常感謝......

我的問題沒有重複的!我發現約NullPointerException異常其他答案沒有完全解決我的問題:)

因爲我的問題和解決方案只有在使用SqliteAssetHelper庫的是,我無法找到任何關於它;)

+0

任何具體理由不使用SQLiteOpenHelper如圖所示[官方文檔(http://developer.android.com/training/basics/data-storage /databases.html#DbHelper)?你也使用getReadableDatabase? – mass

回答

1

SqliteAssetHelper庫文檔:
https://github.com/jgilfelt/android-sqlite-asset-helper

MyDataBase = new MyDatabase(this); 

應該在onCreate方法設置...

所以我的第二個活動,應改爲:

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.result); 

MyDataBase = new MyDatabase(this); // <----- 
mydb = MyDataBase.getWritableDatabase(); // <----- 

Cursor cursor = mydb.rawQuery("SELECT * FROM test ", null); 
while (cursor.moveToNext()) { 
    try { 
     Log.i("LOG", cursor.getString(cursor.getColumnIndex("title"))); 
    } 
    catch (Exception e) {} 
} 
cursor.close(); 
mydb.close(); 

}