读取现有的Sqlite数据库

时间:2015-07-12 20:03:26

标签: android sqlite

我有一个从现有数据库填充的ListView,当用户点击每个项目时,其中一个列应显示在第二个活动(Like dictionary App上)

但我无法对第二项活动执行任何查询。

我正在使用SqliteAssetHelper库。

数据库类:

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库,所以我找不到任何关于它的内容;)

1 个答案:

答案 0 :(得分: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();

}