2013-04-05 201 views
0

如果遊標爲空/空,我想添加一行。如果遊標爲空/空

但是我用不工作的代碼:(錯誤:指數-1大小爲1要求)

   final String query = "SELECT category.CategoryID, " + 
         "category.Title, category.ParentID " + 
         " FROM category" + 
         " WHERE category.Title = '"+ _TopCategory 
         +"'"; 

       Cursor cursorKayita = db.rawQuery(query, null); 

       if (cursorKayita.moveToFirst()) { 
        // start activity 
       } else { 
       _Categories.put("Title", _TopCategory); 
       db.insert("category", null, _Categories); 

       } 
+0

請發表您的logcat的堆棧跟蹤。 – Karakuri 2013-04-05 15:42:51

+2

此代碼中的任何內容都不應拋出該錯誤......您要拋棄什麼? – Sam 2013-04-05 15:45:07

回答

0

你應該添加一行使該問題將光標

try{ 
    Lite = open_bd(); //Open database 
    Cursor x = Lite.query(/*Your query*/); 

    if (x.getCount() != 0 && x != null) { 
     x.moveToFirst(); 
     //Do your activity 
    }else{ 
     _Categories.put("Title", _TopCategory); 
     db.insert("category", null, _Categories); 
    } 
}catch (Exception error) { 
    //Whatever with your error 
} finally { 
    Lite.close(); 
} 

這就是我如何管理光標,原因從來就發現,當你問他們是很不穩定的,如果cursos爲null 。它們可以是空的,但並非總是空

:D希望它可以幫助


當你管理光標和數據庫lenght總是做這樣的事情

where (cursor.getCount() < Xnumber){ 
    //code 
} 

同樣的事情,在如果您應該使用「小於」而不是「小於或等於」,因爲遊標和數據庫從-1索引開始讀取。

看看這個爲:

for (int i = 0; i < x.getCount(); i++) { 
    if (x.getInt(1) == 0) { 
     //CODE 
    } 
    x.moveToNext(); 
} 
0

index -1 requested with a size of 1

這是一個CursorIndexOutOfBoundsException。您只有see this error時纔會嘗試從光標讀取數據,而不調用moveToFirst()(或類似的moveTo___()方法)。但無處在你發佈你想從光標閱讀代碼...

好消息是,logcat的錯誤給你的行號發生這個錯誤的地方,如果你需要幫助閱讀logcat中,點擊"edit"在您的問題下發布。