Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-如何从SQLite数据库处理程序传递字符串id_Java_Android_Sqlite - Fatal编程技术网

Java Android-如何从SQLite数据库处理程序传递字符串id

Java Android-如何从SQLite数据库处理程序传递字符串id,java,android,sqlite,Java,Android,Sqlite,我想从SQLite数据库中传递一个用户ID,但我很难弄清楚。 我一直在做我的研究,但由于我的java技能水平很低,我无法采取进一步的行动。请帮我解决这个问题,我们将非常感激 这是错误日志 10-30 23:04:13.795: E/AndroidRuntime(22860): FATAL EXCEPTION: main 10-30 23:04:13.795: E/AndroidRuntime(22860): java.lang.RuntimeException: Unable to instan

我想从SQLite数据库中传递一个用户ID,但我很难弄清楚。 我一直在做我的研究,但由于我的java技能水平很低,我无法采取进一步的行动。请帮我解决这个问题,我们将非常感激

这是错误日志

10-30 23:04:13.795: E/AndroidRuntime(22860): FATAL EXCEPTION: main
10-30 23:04:13.795: E/AndroidRuntime(22860): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.app.android/com.app.android.MainActivity}: java.lang.NullPointerException
10-30 23:04:13.795: E/AndroidRuntime(22860):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1894)
10-30 23:04:13.795: E/AndroidRuntime(22860):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
10-30 23:04:13.795: E/AndroidRuntime(22860):    at android.app.ActivityThread.access$600(ActivityThread.java:128)
10-30 23:04:13.795: E/AndroidRuntime(22860):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
10-30 23:04:13.795: E/AndroidRuntime(22860):    at android.os.Handler.dispatchMessage(Handler.java:99)
10-30 23:04:13.795: E/AndroidRuntime(22860):    at android.os.Looper.loop(Looper.java:137)
10-30 23:04:13.795: E/AndroidRuntime(22860):    at android.app.ActivityThread.main(ActivityThread.java:4517)
10-30 23:04:13.795: E/AndroidRuntime(22860):    at java.lang.reflect.Method.invokeNative(Native Method)
10-30 23:04:13.795: E/AndroidRuntime(22860):    at java.lang.reflect.Method.invoke(Method.java:511)
10-30 23:04:13.795: E/AndroidRuntime(22860):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
10-30 23:04:13.795: E/AndroidRuntime(22860):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
10-30 23:04:13.795: E/AndroidRuntime(22860):    at dalvik.system.NativeStart.main(Native Method)
10-30 23:04:13.795: E/AndroidRuntime(22860): Caused by: java.lang.NullPointerException
10-30 23:04:13.795: E/AndroidRuntime(22860):    at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:101)
10-30 23:04:13.795: E/AndroidRuntime(22860):    at com.app.android.MainActivity.<init>(MainActivity.java:16)
10-30 23:04:13.795: E/AndroidRuntime(22860):    at java.lang.Class.newInstanceImpl(Native Method)
10-30 23:04:13.795: E/AndroidRuntime(22860):    at java.lang.Class.newInstance(Class.java:1319)
10-30 23:04:13.795: E/AndroidRuntime(22860):    at android.app.Instrumentation.newActivity(Instrumentation.java:1027)
10-30 23:04:13.795: E/AndroidRuntime(22860):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1885)

我认为错误并不存在。你在某处有一个空指针。 logcat中的错误是由以下原因引起的:

DatabaseHandler db = new DatabaseHandler(getApplicationContext());
您应该在
onCreate()中初始化该db变量

无论如何,返回ID的正确方法应该是:

public int getUserID() {
    String qry = "SELECT id FROM " + TABLE_LOGIN;
    SQLiteDatabase db = this.getReadableDatabase();     
    Cursor cursor = db.rawQuery(qry, null);
    int res = id.getInt(id.getColumnIndex("id"));
    cursor.close();
    return res;
}

(不要忘记关闭光标

只是一个旁注-在您显示的代码中不必使用
getApplicationContext()
-您只需使用
传递
活动的
上下文
。哦,感谢您的建议
DatabaseHandler db = new DatabaseHandler(getApplicationContext());
public int getUserID() {
    String qry = "SELECT id FROM " + TABLE_LOGIN;
    SQLiteDatabase db = this.getReadableDatabase();     
    Cursor cursor = db.rawQuery(qry, null);
    int res = id.getInt(id.getColumnIndex("id"));
    cursor.close();
    return res;
}