请帮助在我的代码中找到问题。我正在尝试检查用户是否输入了有效的电子邮件地址以及它是否已经存在。如果用户通过某种格式输入了无效的电子邮件地址,我已经陷阱,我已经检查了电子邮件是否存在,我的问题是每当用户输入新的有效电子邮件地址时,我的应用程序就会崩溃。这是我的代码:
else if (!Email.equals(""))
{
if(Email.equals(storedEmail)) //Check if the email address already exist
{
Toast.makeText(getApplicationContext(), "Email address already exist.",Toast.LENGTH_LONG).show();
}
else if (!matcherObj.matches()) //it will check if the user enter valid email
{
Toast.makeText(getApplicationContext(), "Invalid email address.",Toast.LENGTH_LONG).show();
txtEmail.setText("");
}
else // if the email address is not existing and is valid it will save to the database
{
db.Register(newPatientInfo(Fname,Mname,Lname,Suffix,Birthday,Homeno,MobileNo,Email,Brgy,Province,CityMun,Zip,CFname,CLname,DClinic,DClinicAdd));
Toast.makeText(getApplicationContext(),"Saved!", Toast.LENGTH_LONG).show();
Clear();
}
}
这是我的数据库处理程序中的代码
public String Patient_Emailexist(String p_email)
{
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.query(TABLE_PATIENT, null, PATIENT_EMAIL + "=?", new String[]{String.valueOf(p_email)},null, null, null);
if (c == null)
{
c.moveToFirst();
}
c.moveToFirst();
String patient_email = c.getString(c.getColumnIndex(PATIENT_EMAIL));
return patient_email;
}
每当我输入一个应该保存在数据库中的有效的新电子邮件地址时,我的应用程序就会崩溃。提前致谢!
发现错误
05-17 10:27:17.410: E/AndroidRuntime(678): 致命异常: main 05-17 10:27:17.410: E/AndroidRuntime(678): android.database.CursorIndexOutOfBoundsException: 请求索引 0,大小为0 05-17 10:27:17.410: E/AndroidRuntime(678): 在 android.database.AbstractCursor.checkPosition(AbstractCursor.java:418) 05-17 10:27:17.410: E/AndroidRuntime(678): 在 android .database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136) 05-17 10:27:17.410: E/AndroidRuntime(678): 在 android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50) 05-17 10:27 :17.410: E/AndroidRuntime(678): 在 com.example.palsproject.DatabaseHandler.Patient_Emailexist(DatabaseHandler.java:353) 05-17 10:27:17.410: E/AndroidRuntime(678): 在 com.example.palsproject。 PatientRegistration$1.onClick(PatientRegistration.java:95) 05-17 10:27:17.410: E/AndroidRuntime(678): 在 android.view.View.performClick(View.java:4084) 05-17 10:27:17.410: E/AndroidRuntime(678): 在 android.view.View$PerformClick.run (View.java:16966) 05-17 10:27:17.410: E/AndroidRuntime(678): 在 android.os.Handler.handleCallback(Handler.java:615) 05-17 10:27:17.410: E/AndroidRuntime (678): 在 android.os.Handler.dispatchMessage(Handler.java:92) 05-17 10:27:17.410: E/AndroidRuntime(678): 在 android.os.Looper.loop(Looper.java:137) 05-17 10:27:17.410: E/AndroidRuntime(678): 在 android.app.ActivityThread.main(ActivityThread.java:4745) 05-17 10:27:17.410: E/AndroidRuntime(678): 在 java. lang.reflect.Method.invokeNative(Native Method) 05-17 10:27:17.410: E/AndroidRuntime(678): at java.lang.reflect.Method.invoke(Method.java:511) 05-17 10:27 :17.410: E/AndroidRuntime(678): 在 com.android.internal.os。ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 05-17 10:27:17.410: E/AndroidRuntime(678): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 05-17 10:27:17.410:E/AndroidRuntime(678):在 dalvik.system.NativeStart.main(本机方法)