Java Android SQLite,查询但找不到行,给我错误
我尝试使用cursor==null,但没有效果,cursor.getCount==0,以及moveFirst方法。。仍然是错误,这是我的代码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
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);你能把这个拿走吗?