3
我有一個表中有6列,我試圖從只有3列獲取所有行,並將其存儲在數組中以使用它。我的查詢是這樣的:字段插槽,SQLite的不良要求 - Android
public Cursor fetchInfo(long rowId) throws SQLException
{
Cursor mCursor = mDb.query(true, DATABASE_TABLE, new String[] {"_id", "xCoord", "yCoord", "color"}, "_id" + "=" + rowId, null, null, null, null, null);
if(mCursor != null)
{
mCursor.moveToFirst();
}
return mCursor;
}
然後我打電話給它,如下所示:
private void getInfo()
{
Cursor mCursor = mDbHelper.fetchInfo(mRowId);
x = new float[mCursor.getCount()];
y = new float[mCursor.getCount()];
color = new int[mCursor.getCount()];
if(mCursor.moveToFirst())
{
for(int i = 0; i < mCursor.getCount(); i++)
{
x[i] = mCursor.getFloat(3);
y[i] = mCursor.getFloat(4); //Line 76, this is where the error is occurs.
color[i] = mCursor.getInt(5);
}
}
mCursor.close();
}
然而,當我嘗試運行此,我得到一個錯誤說:
12-19 15:40:36.903: E/CursorWindow(276): Bad request for field slot 0,4. numRows = 1, numColumns = 4
12-19 15:40:36.903: D/AndroidRuntime(276): Shutting down VM
12-19 15:40:36.912: W/dalvikvm(276): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
12-19 15:40:36.922: E/AndroidRuntime(276): FATAL EXCEPTION: main
12-19 15:40:36.922: E/AndroidRuntime(276): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.x17.projects.strikezone/com.x17.projects.strikezone.SavedEntries}: java.lang.IllegalStateException: get field slot from row 0 col 4 failed
12-19 15:40:36.922: E/AndroidRuntime(276): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
12-19 15:40:36.922: E/AndroidRuntime(276): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
12-19 15:40:36.922: E/AndroidRuntime(276): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
12-19 15:40:36.922: E/AndroidRuntime(276): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
12-19 15:40:36.922: E/AndroidRuntime(276): at android.os.Handler.dispatchMessage(Handler.java:99)
12-19 15:40:36.922: E/AndroidRuntime(276): at android.os.Looper.loop(Looper.java:123)
12-19 15:40:36.922: E/AndroidRuntime(276): at android.app.ActivityThread.main(ActivityThread.java:4627)
12-19 15:40:36.922: E/AndroidRuntime(276): at java.lang.reflect.Method.invokeNative(Native Method)
12-19 15:40:36.922: E/AndroidRuntime(276): at java.lang.reflect.Method.invoke(Method.java:521)
12-19 15:40:36.922: E/AndroidRuntime(276): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-19 15:40:36.922: E/AndroidRuntime(276): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-19 15:40:36.922: E/AndroidRuntime(276): at dalvik.system.NativeStart.main(Native Method)
12-19 15:40:36.922: E/AndroidRuntime(276): Caused by: java.lang.IllegalStateException: get field slot from row 0 col 4 failed
12-19 15:40:36.922: E/AndroidRuntime(276): at android.database.CursorWindow.getDouble_native(Native Method)
12-19 15:40:36.922: E/AndroidRuntime(276): at android.database.CursorWindow.getFloat(CursorWindow.java:451)
12-19 15:40:36.922: E/AndroidRuntime(276): at android.database.AbstractWindowedCursor.getFloat(AbstractWindowedCursor.java:123)
12-19 15:40:36.922: E/AndroidRuntime(276): at com.x17.projects.strikezone.SavedEntries.getInfo(SavedEntries.java:76)
12-19 15:40:36.922: E/AndroidRuntime(276): at com.x17.projects.strikezone.SavedEntries.onCreate(SavedEntries.java:46)
12-19 15:40:36.922: E/AndroidRuntime(276): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-19 15:40:36.922: E/AndroidRuntime(276): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
12-19 15:40:36.922: E/AndroidRuntime(276): ... 11 more
我是新來的數據庫,所以我不知道如何解決這個問題。我嘗試了一些不同的方法來解決這個問題,但沒有成功。我在這裏做錯了什麼?我應該這樣做嗎?
啊我明白了,我認爲這是列號e表本身,而不是查詢。謝謝! – user990230 2011-12-19 21:32:52