【发布时间】:2021-08-31 13:14:58
【问题描述】:
我有以下活动。
- User_info:我在其中编辑文本框以从 SQlite 获取用户数据并允许用户更改他的数据。
- User_confirmation:如果用户想修改他的个人信息,他需要去活动 User_info,但在去之前他必须重新输入他的电子邮件和密码。
这是 DBHelper 类中的一个函数,用于向 user_info 发送数据。
public Cursor getAllData(String email, String password) {
SQLiteDatabase db = this.getWritableDatabase();
Cursor res=null;
if ( res.moveToFirst())
res = db.rawQuery("Select * from persons where email = ? and password = ?", new String[]{email, password});
return res;
}
}
我收到此错误。
2021-06-15 15:18:52.264 26638-26638/nanodevlab.screens E/AndroidRuntime: FATAL EXCEPTION: main
Process: nanodevlab.screens, PID: 26638
java.lang.RuntimeException: Unable to start activity ComponentInfo{nanodevlab.screens/nanodevlab.screens.userconfirmation}: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.database.Cursor.moveToFirst()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.database.Cursor.moveToFirst()' on a null object reference
at nanodevlab.screens.DBHelper.getAllData(DBHelper.java:80)
at nanodevlab.screens.userconfirmation.onCreate(userconfirmation.java:36)
at android.app.Activity.performCreate(Activity.java:6975)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
2021-06-15 15:18:52.355 26638-26643/nanodevlab.screens I/zygote: JIT allocated 56KB for compiled code of void android.view.View.<init>(android.content.Context, android.util.AttributeSet, int, int)
这就是我调用 getAllData() 函数的方式。
Cursor c=DB.getAllData(emailid,pass);
int index = c.getColumnIndexOrThrow("username");
String firstName = c.getString(index);
【问题讨论】:
标签: java android sqlite android-sqlite android-cursor