读取现有的Sqlite数据库[重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

我有一个从现有数据库填充的ListView,当用户点击每个项目时,其他列之一应显示在第二个Activity (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库,我找不到任何关于它;)

android sqlite
1个回答
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();

}
© www.soinside.com 2019 - 2024. All rights reserved.