Android SQLite检索整数

Android SQLite检索整数,android,sqlite,Android,Sqlite,如何从SQLite中的行中获取单个值?例如,我有一个getLevel()方法和一个带有“id,coin,level”的行,getLevel()用于获取和返回levelonly。我该怎么做?这是我的密码 public int getLevel(int id) { int level = 0; String selectQuery = "SELECT "+colCurrentLvl+" FROM " + userTable + " WHERE " +userID + "="+id;

如何从SQLite中的行中获取单个值?例如,我有一个getLevel()方法和一个带有“id,coin,level”的行,getLevel()用于获取和返回levelonly。我该怎么做?这是我的密码

public int getLevel(int id) {
    int level = 0;
    String selectQuery = "SELECT "+colCurrentLvl+" FROM " + userTable + " WHERE " +userID + "="+id; 

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    if (null != cursor && cursor.moveToFirst()) {
        level = Integer.parseInt(cursor.getString(cursor.getColumnIndex(colCurrentLvl)));
    }

    cursor.close();
    db.close();

    return level;
}
在我的主课上,我需要这样设置

int level = db.getLevel(1);
但我的模拟力关闭了。有什么帮助吗

> 10-10 11:09:43.626: E/AndroidRuntime(856): FATAL EXCEPTION: main
10-10 11:09:43.626: E/AndroidRuntime(856): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.androidexercises.pics1song/com.androidexercises.pics1song.Game}: java.lang.NullPointerException
10-10 11:09:43.626: E/AndroidRuntime(856):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
10-10 11:09:43.626: E/AndroidRuntime(856):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
10-10 11:09:43.626: E/AndroidRuntime(856):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
10-10 11:09:43.626: E/AndroidRuntime(856):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
10-10 11:09:43.626: E/AndroidRuntime(856):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-10 11:09:43.626: E/AndroidRuntime(856):  at android.os.Looper.loop(Looper.java:137)
10-10 11:09:43.626: E/AndroidRuntime(856):  at android.app.ActivityThread.main(ActivityThread.java:5041)
10-10 11:09:43.626: E/AndroidRuntime(856):  at java.lang.reflect.Method.invokeNative(Native Method)
10-10 11:09:43.626: E/AndroidRuntime(856):  at java.lang.reflect.Method.invoke(Method.java:511)
10-10 11:09:43.626: E/AndroidRuntime(856):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
10-10 11:09:43.626: E/AndroidRuntime(856):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
10-10 11:09:43.626: E/AndroidRuntime(856):  at dalvik.system.NativeStart.main(Native Method)
10-10 11:09:43.626: E/AndroidRuntime(856): Caused by: java.lang.NullPointerException
10-10 11:09:43.626: E/AndroidRuntime(856):  at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:229)
10-10 11:09:43.626: E/AndroidRuntime(856):  at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
10-10 11:09:43.626: E/AndroidRuntime(856):  at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:188)
10-10 11:09:43.626: E/AndroidRuntime(856):  at com.androidexercises.pics1song.DatabaseHelper.getLevel(DatabaseHelper.java:51)
10-10 11:09:43.626: E/AndroidRuntime(856):  at com.androidexercises.pics1song.Game.<init>(Game.java:39)
10-10 11:09:43.626: E/AndroidRuntime(856):  at java.lang.Class.newInstanceImpl(Native Method)
10-10 11:09:43.626: E/AndroidRuntime(856):  at java.lang.Class.newInstance(Class.java:1319)
10-10 11:09:43.626: E/AndroidRuntime(856):  at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
10-10 11:09:43.626: E/AndroidRuntime(856):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
哦,我不需要添加新行。我只需要每次更新同一行。

您尝试过这个吗

level = cursor.getInt(cursor.getColumnIndex(colCurrentLvl));

您试图过早地从数据库初始化活动类成员变量,例如在构造函数中。但是在
onCreate()
之前,您不能将活动用作
上下文。将成员变量初始化移动到
onCreate()
。活动无论如何都不需要显式构造函数。

什么是
colCurrentLvl
?包含我级别的列名的字符串。要求发布实际错误和stacktrace是否太多?请同时包含调用
getLevel()
函数的上下文。它在代码中的什么位置,如何初始化
db
等等。更新为我如何初始化我的数据库和级别。谢谢回复。但武力仍然收场。
level = cursor.getInt(cursor.getColumnIndex(colCurrentLvl));
10-10 11:09:43.626: E/AndroidRuntime(856): Caused by: java.lang.NullPointerException
10-10 11:09:43.626: E/AndroidRuntime(856): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:229) 10-10 

...

10-10 11:09:43.626: E/AndroidRuntime(856): at com.androidexercises.pics1song.Game.(Game.java:39)
10-10 11:09:43.626: E/AndroidRuntime(856): at java.lang.Class.newInstanceImpl(Native Method)
10-10 11:09:43.626: E/AndroidRuntime(856): at java.lang.Class.newInstance(Class.java:1319)