Android 空对象引用上的SQLITE数据库

Android 空对象引用上的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(); }

据推测,我想调用一个SQLStatement,它最终将返回特定行的ID

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扩展的类中吗?