我想从sqlite中检索数据以显示在我的仪表板上,但它显示错误。
01-22 09:31:04.484: E/AndroidRuntime(2174): FATAL EXCEPTION: main
01-22 09:31:04.484: E/AndroidRuntime(2174): java.lang.RuntimeException: Unable to start activity ComponentInfo{kids.game.fruitsmemorygame/kids.game.fruitsmemorygame.level_selection}: java.lang.IllegalStateException: Couldn't read row 0, col 5 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
01-22 09:31:04.484: E/AndroidRuntime(2174): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
01-22 09:31:04.484: E/AndroidRuntime(2174): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
01-22 09:31:04.484: E/AndroidRuntime(2174): at android.app.ActivityThread.access$600(ActivityThread.java:141)
01-22 09:31:04.484: E/AndroidRuntime(2174): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
01-22 09:31:04.484: E/AndroidRuntime(2174): at android.os.Handler.dispatchMessage(Handler.java:99)
01-22 09:31:04.484: E/AndroidRuntime(2174): at android.os.Looper.loop(Looper.java:137)
01-22 09:31:04.484: E/AndroidRuntime(2174): at android.app.ActivityThread.main(ActivityThread.java:5103)
01-22 09:31:04.484: E/AndroidRuntime(2174): at java.lang.reflect.Method.invokeNative(Native Method)
01-22 09:31:04.484: E/AndroidRuntime(2174): at java.lang.reflect.Method.invoke(Method.java:525)
01-22 09:31:04.484: E/AndroidRuntime(2174): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
01-22 09:31:04.484: E/AndroidRuntime(2174): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-22 09:31:04.484: E/AndroidRuntime(2174): at dalvik.system.NativeStart.main(Native Method)
01-22 09:31:04.484: E/AndroidRuntime(2174): Caused by: java.lang.IllegalStateException: Couldn't read row 0, col 5 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
01-22 09:31:04.484: E/AndroidRuntime(2174): at android.database.CursorWindow.nativeGetLong(Native Method)
01-22 09:31:04.484: E/AndroidRuntime(2174): at android.database.CursorWindow.getLong(CursorWindow.java:507)
01-22 09:31:04.484: E/AndroidRuntime(2174): at android.database.CursorWindow.getInt(CursorWindow.java:574)
01-22 09:31:04.484: E/AndroidRuntime(2174): at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:69)
01-22 09:31:04.484: E/AndroidRuntime(2174): at kids.game.fruitsmemorygame.level_selection.onCreate(level_selection.java:145)
01-22 09:31:04.484: E/AndroidRuntime(2174): at android.app.Activity.performCreate(Activity.java:5133)
01-22 09:31:04.484: E/AndroidRuntime(2174): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
01-22 09:31:04.484: E/AndroidRuntime(2174): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
01-22 09:31:04.484: E/AndroidRuntime(2174): ... 11 more
public Cursor getFRUIT_LEVEL_STEP_2()
{
Cursor step_2 = sqLiteDatabase.rawQuery("SELECT count(*) FROM FRUIT WHERE " + KEY_RESULT + "='Pass' AND " + KEY_LEVEL_STEP_OK + "=1 " + "ORDER BY " + KEY_ID + " DESC LIMIT 1", null);
return step_2;
}
step_2 = mySQLiteAdapter.getFRUIT_LEVEL_STEP_2();
step_2.moveToFirst();
int count2 = step_2.getInt(0);
int score2 = step_2.getInt(5);
if(count2 != 0)
{
if(score2 == 50)
{
btn_l2.setBackgroundResource(R.drawable.star_1);
}
if(score2 == 75)
{
btn_l2.setBackgroundResource(R.drawable.star_2);
}
if(score2 == 100)
{
btn_l2.setBackgroundResource(R.drawable.star_3);
}
l2.setText("2");
l2.setBackgroundResource(R.drawable.key_normal);
l2.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
click.start();
Intent i = new Intent();
i.setClassName("kids.iq.kidsiqpicturesquestionfull", "kids.iq.kidsiqpicturesquestionfull.fruit_2");
startActivity(i);
}
});
}
答案 0 :(得分:4)
SELECT COUNT(*)
只返回一列。您尝试使用step_2.getInt(5)
访问时没有列索引5。
问题中没有足够的信息来提出解决方案。我可以解释这个例外。