Java Android SQLite,查询但找不到行,给我错误

Java Android SQLite,查询但找不到行,给我错误,java,android,sqlite,Java,Android,Sqlite,我尝试使用cursor==null,但没有效果,cursor.getCount==0,以及moveFirst方法。。仍然是错误,这是我的代码 public void getColumns() { String[] columns = new String[] {"CLASSROOM_ID"}; Cursor c = ourDatabase.query("CLASSROOM_TABLE", columns, "CLASSROO

我尝试使用cursor==null,但没有效果,cursor.getCount==0,以及moveFirst方法。。仍然是错误,这是我的代码

  public void getColumns()
        {


            String[] columns = new String[] {"CLASSROOM_ID"};
            Cursor c = ourDatabase.query("CLASSROOM_TABLE", columns, "CLASSROOM_AVAILABLE =  0", null,
                    null, null, null);

            if (c.moveToFirst())
                    {
                int[] myid = new int[c.getCount()];
                int i = 0;

                while (!c.isAfterLast()) 
                    {

                    myid[i]=c.getInt(0);
                    ContentValues cv = new ContentValues();
                    cv.put("CLASSROOM_AVAILABLE", 1);
                    ourDatabase.update("CLASSROOM_TABLE", cv, "CLASSROOM_ID = "+myid[i], null);



                    i++;
                    c.moveToNext();

                    }
                    }




        }
我真的不知道我做错了什么,我应该怎么做才能让我的应用程序知道光标找不到行

这是logcat

10-29 12:04:23.903: D/AndroidRuntime(22782): Shutting down VM
10-29 12:04:23.903: W/dalvikvm(22782): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
10-29 12:04:23.923: E/AndroidRuntime(22782): FATAL EXCEPTION: main
10-29 12:04:23.923: E/AndroidRuntime(22782): java.lang.IllegalStateException: Could not execute method of the activity
10-29 12:04:23.923: E/AndroidRuntime(22782):    at android.view.View$1.onClick(View.java:2072)
10-29 12:04:23.923: E/AndroidRuntime(22782):    at android.view.View.performClick(View.java:2408)
10-29 12:04:23.923: E/AndroidRuntime(22782):    at android.view.View$PerformClick.run(View.java:8816)
10-29 12:04:23.923: E/AndroidRuntime(22782):    at android.os.Handler.handleCallback(Handler.java:587)
10-29 12:04:23.923: E/AndroidRuntime(22782):    at android.os.Handler.dispatchMessage(Handler.java:92)
10-29 12:04:23.923: E/AndroidRuntime(22782):    at android.os.Looper.loop(Looper.java:123)
10-29 12:04:23.923: E/AndroidRuntime(22782):    at android.app.ActivityThread.main(ActivityThread.java:4627)
10-29 12:04:23.923: E/AndroidRuntime(22782):    at java.lang.reflect.Method.invokeNative(Native Method)
10-29 12:04:23.923: E/AndroidRuntime(22782):    at java.lang.reflect.Method.invoke(Method.java:521)
10-29 12:04:23.923: E/AndroidRuntime(22782):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-29 12:04:23.923: E/AndroidRuntime(22782):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-29 12:04:23.923: E/AndroidRuntime(22782):    at dalvik.system.NativeStart.main(Native Method)
10-29 12:04:23.923: E/AndroidRuntime(22782): Caused by: java.lang.reflect.InvocationTargetException
10-29 12:04:23.923: E/AndroidRuntime(22782):    at my.skul.Mainmenu.sectwenty(Mainmenu.java:71)
10-29 12:04:23.923: E/AndroidRuntime(22782):    at java.lang.reflect.Method.invokeNative(Native Method)
10-29 12:04:23.923: E/AndroidRuntime(22782):    at java.lang.reflect.Method.invoke(Method.java:521)
10-29 12:04:23.923: E/AndroidRuntime(22782):    at android.view.View$1.onClick(View.java:2067)
10-29 12:04:23.923: E/AndroidRuntime(22782):    ... 11 more
10-29 12:04:23.923: E/AndroidRuntime(22782): Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
10-29 12:04:23.923: E/AndroidRuntime(22782):    at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
10-29 12:04:23.923: E/AndroidRuntime(22782):    at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
10-29 12:04:23.923: E/AndroidRuntime(22782):    at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:99)
10-29 12:04:23.923: E/AndroidRuntime(22782):    at my.skul.MyCreateClassrooms.get(MyCreateClassrooms.java:111)
10-29 12:04:23.923: E/AndroidRuntime(22782):    ... 15 more

您需要使用将光标移动到第一个位置

如果光标为空,此方法将返回false

(或)

另一种方式是:

 while (cursor.moveToNext()) {
     //Your logic
    }

谢谢,仍然让我的错误,虽然,试图解决它,你可以发布我的代码与您的编辑?。。如果找不到行,它仍然会给我错误信息。。。检查编辑,我在理解您的答案的情况下编辑它,我是新手您的代码应该是,if(c.moveToFirst()){//your code},将else代码移到if块内。请阅读并理解我的回答。好的,我再次编辑了它,它确实起到了我想要的作用(更新),但如果没有找到行,仍然会给我错误。如果我不能调试它,我真的很抱歉,我真的是一个新的异常,你会在logcat中看到。我怀疑你的问题是,myid[i]=c.getInt(0);你能把这个拿走吗?