我不知道爲什麼我的光標是空的。我讀了其他4-5個包含相同信息的問題,但我無法解決我的問題。我忘了什麼?光標崩潰:請求索引0,大小爲0
有了這個代碼,我得到的消息:「光標爲空」:
public void onClick(View arg0) {
String txt_edit_hw = edit_hw.getText().toString();
ContentValues args = new ContentValues();
args.put("hw", txt_edit_hw);
String test = "SELECT _id FROM tbl_homework where hw='"+ txt_edit_hw +"';";
Cursor mCursor = db.rawQuery(test, null);
startManagingCursor(mCursor);
if (mCursor.moveToFirst()){
String hw = mCursor.getString(mCursor.getColumnIndex("hw"));
doMessage(hw);
db.update("tbl_homework", args, "_id=34", null);
fillData();
} else {
doMessage("Cursor is empty");
}
}
有了這個代碼,我得到了crach ...安卓指數0請求,大小爲0:
public void onClick(View arg0) {
String txt_edit_hw = edit_hw.getText().toString();
ContentValues args = new ContentValues();
args.put("hw", txt_edit_hw);
String test = "SELECT _id FROM tbl_homework where hw='"+ txt_edit_hw +"';";
Cursor mCursor = db.rawQuery(test, null);
startManagingCursor(mCursor);
mCursor.moveToFirst();
String hw = mCursor.getString(mCursor.getColumnIndex("hw"));
doMessage(hw);
db.update("tbl_homework", args, "_id=34", null);
fillData();
}
同樣的錯誤是這樣的:它崩潰的字符串(我評論的話)
public void onClick(View arg0) {
String txt_edit_hw = edit_hw.getText().toString();
txt_edit_hw.trim();
ContentValues args = new ContentValues();
args.put("hw", txt_edit_hw);
String test = "SELECT _id FROM tbl_homework where hw='"+ txt_edit_hw +"';";
Cursor mCursor = db.rawQuery(test, null);
startManagingCursor(mCursor);
mCursor.moveToFirst();
/**It crashes here**/String hwl = mCursor.getString(mCursor.getColumnIndex("_id"));
doMessage(hwl);
db.update("tbl_homework", args, "_id=34", null);
fillData();
}
02-06 12:13:49.789: I/Process(6112): Sending signal. PID: 6112 SIG: 9
02-06 12:13:55.582: D/dalvikvm(6140): GC_EXTERNAL_ALLOC freed 37K, 49% free 2785K/5379K, external 5211K/5218K, paused 23ms
02-06 12:13:58.785: D/AndroidRuntime(6140): Shutting down VM
02-06 12:13:58.785: W/dalvikvm(6140): threadid=1: thread exiting with uncaught exception (group=0x40091568)
02-06 12:13:58.796: E/AndroidRuntime(6140): FATAL EXCEPTION: main
02-06 12:13:58.796: E/AndroidRuntime(6140): android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
02-06 12:13:58.796: E/AndroidRuntime(6140): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
02-06 12:13:58.796: E/AndroidRuntime(6140): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
02-06 12:13:58.796: E/AndroidRuntime(6140): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:41)
02-06 12:13:58.796: E/AndroidRuntime(6140): at test.marco.notenha.homework$3.onClick(homework.java:227)
02-06 12:13:58.796: E/AndroidRuntime(6140): at android.view.View.performClick(View.java:2486)
02-06 12:13:58.796: E/AndroidRuntime(6140): at android.view.View$PerformClick.run(View.java:9130)
02-06 12:13:58.796: E/AndroidRuntime(6140): at android.os.Handler.handleCallback(Handler.java:587)
02-06 12:13:58.796: E/AndroidRuntime(6140): at android.os.Handler.dispatchMessage(Handler.java:92)
02-06 12:13:58.796: E/AndroidRuntime(6140): at android.os.Looper.loop(Looper.java:130)
02-06 12:13:58.796: E/AndroidRuntime(6140): at android.app.ActivityThread.main(ActivityThread.java:3703)
02-06 12:13:58.796: E/AndroidRuntime(6140): at java.lang.reflect.Method.invokeNative(Native Method)
02-06 12:13:58.796: E/AndroidRuntime(6140): at java.lang.reflect.Method.invoke(Method.java:507)
02-06 12:13:58.796: E/AndroidRuntime(6140): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
02-06 12:13:58.796: E/AndroidRuntime(6140): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
02-06 12:13:58.796: E/AndroidRuntime(6140): at dalvik.system.NativeStart.main(Native Method)
表: 行:_id,hwdate,hw Val:「34」,「05/02/12」,「hy,xsdhagsah」
你的第一個方法是好的。看起來數據庫中沒有任何數據與你的條件有關。所以你需要寫查詢爲String test =「SELECT * FROM tbl_homework where hw ='」+ txt_edit_hw +「';」;再次如果你沒有得到結果檢查你的數據庫或在edit_hw.getText()。toString()之後使用.trim()。 PS:不要使用getcount(),不需要這樣做。 – 2012-02-06 10:39:49
當我使用txt_edit_hw.trim()時出現同樣的錯誤;我檢查了我的數據庫;)有一些條目第一個是_id = 34. – 2012-02-06 11:10:34
您確定您的where語句是否正確,選擇是否爲空? – Ash 2012-02-06 11:29:28