Android 空对象引用上的SQLITE数据库
据推测,我想调用一个SQLStatement,它最终将返回特定行的IDAndroid 空对象引用上的SQLITE数据库,android,database,nullpointerexception,Android,Database,Nullpointerexception,据推测,我想调用一个SQLStatement,它最终将返回特定行的ID public int FindInDatabase(String info){ Cursor c = db.rawQuery("SELECT id FROM " + DatabaseName + " WHERE " + DataField + " = " + info,null); if (c != null){ c.moveToFirst(); }
public int FindInDatabase(String info){
Cursor c = db.rawQuery("SELECT id FROM " + DatabaseName + " WHERE " + DataField + " = " + info,null);
if (c != null){
c.moveToFirst();
}
return c.getInt(1);
}
以上代码无法成功执行,包含游标错误:android.database.sqlite.SQLiteDatabase.rawQueryjava.lang.String,java.lang.String[]
在空对象引用上。这里怎么了?谢谢。试试这个
在您已扩展SqliteOpenHelper的类中。在使用db对象之前初始化它
public int FindInDatabase(String info){
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery("SELECT id FROM " + DatabaseName + " WHERE " + DataField + " = " + info,null);
if (c != null){
c.moveToFirst();
}
return c.getInt(1);
}
使用游标前需要初始化DB
SQLiteDatabase db = this.getReadableDatabase();
//cursor usage for db
因此,您的代码应该如下所示:
public int FindInDatabase(String info){
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery("SELECT id FROM " + DatabaseName + " WHERE " + DataField + " = " + info,null);
if (c != null){
c.moveToFirst();
}
return c.getInt(1);
}
您是否正确初始化数据库?在调用查询之前,您需要初始化open database。您在代码中完成了吗?您好,谢谢您的回复。我遇到一个错误,无法解析方法“GetReadbleDatabase”。。如何解决这个问题?tq@JackPowell可以在哪个类中有此方法FindInDatabase。它在活动吗?或扩展SqliteOpenHelper的类。此方法FindInDatabase在活动类中实现。活动类未使用SqliteOpenHelper进行扩展。tq@JackPowell您可以将此方法移动到由SqliteOpenHelper扩展的类中吗?