无法从游标中获取值

时间:2016-01-19 23:51:18

标签: java android sql

cursor.getcount()返回1但是当我尝试从光标获取值时应用程序崩溃。

这是我的onclick功能:

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);
    // }

}

这是数据库中的函数:

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;
}

这是我得到的错误

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) 

0 个答案:

没有答案