cursor.getcount()
returns 1 however when i try to get a value from the cursor the app crashes.
Here is my onclick function:
public void log(View v) {
String n=name.getText().toString();
String p=pass.getText().toString();
db.getReadableDatabase();
c=db.getUser(n,p);
if(c.getCount()==0)
Toast.makeText(getApplicationContext(), "it is not correct", Toast.LENGTH_LONG).show();
else{
Toast.makeText(getApplicationContext(), "it is correct = "+c.getCount(), Toast.LENGTH_LONG).show();
String s= c.getString(c.getColumnIndex(2));}
// if(c!=null && c.getCount()>0)
// else{
// Toast.makeText(getApplicationContext(), "it is not correct", Toast.LENGTH_LONG).show();
//Intent i = new Intent(LogIn.this, Secretary.class);
//startActivity(i);
// }
}
And this is the function inside the database:
public Cursor getUser(String n, String p) {
Cursor c;
String sqlQuery = "SELECT * FROM "
+ TABLE_User+" WHERE "+User_NAME+" = '"+n+"' AND "+User_PASSWORD+" = '"+p+"'";
SQLiteDatabase db = this.getReadableDatabase();
c = db.rawQuery(sqlQuery,null); return c;
}
And here is the error i get
01-20 01:47:59.420 24346-24346/com.example.ghumdan.finalprojectkg E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:275)
at android.view.View.performClick(View.java:4354)
at android.view.View$PerformClick.run(View.java:17961)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5328)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270)
at android.view.View.performClick(View.java:4354)
at android.view.View$PerformClick.run(View.java:17961)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5328)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
at android.database.AbstractCursor.checkPosition(AbstractCursor.java:424)
at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
at com.example.ghumdan.finalprojectkg.LogIn.log(LogIn.java:64)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270)
at android.view.View.performClick(View.java:4354)
at android.view.View$PerformClick.run(View.java:17961)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5328)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)