2014-10-07 26 views
0

對不起模糊的問題,但作爲主題指出,如果我只有查詢結果,如何查詢查詢是成功還是失敗?SQLite:查詢成功與失敗的區別?

我比較成功的,並試圖獲取單個行,我注意到的唯一區別時失敗的查詢是,這並設法獲取該行的一個與mCount = 1返回,而另一人用返回mCount = 0

編輯: 返回遊標的方法。

public Cursor getElement(int elementID){ 
    SQLiteDatabase database = this.getReadableDatabase(); 
    Cursor cursor = database.query(TABLE_NAME, new String[]{COLUMN_NAME_UN_ID, COLUMN_NAME_UN_NAME}, COLUMN_NAME_UN_ID + "=?", new String[]{String.valueOf(elementID)}, null, null, null, null); 
    if(cursor != null) { 
     cursor.moveToFirst(); 
    } 
    return cursor; 
} 
+0

你在SQLite中使用什麼語言? – Googie 2014-10-07 12:39:40

+0

我正在使用Android。 – 2014-10-07 12:41:10

+0

你應該粘貼一段代碼來表示你如何執行查詢以及如何讀取結果。 – Googie 2014-10-07 12:52:39

回答

2

如果查詢包含語法錯誤,則會收到異常。

如果查詢與任何記錄不匹配,您將得到一個空遊標。

檢查結果值moveTo...()以查看遊標是否指向移動後的有效行。通過遊標循環的典型方式是

if (cursor.moveToFirst()) { 
    do { 
    // do something with row data 
    } while (cursor.moveToNext()); 
} 

您還可以使用cursor.getCount()讓行的,但是從性能的角度來看的數量它並不像上面的DO-而高效。

SQLiteDatabasequery()不會返回null因此檢查!= null是沒有必要的。

+0

嗯,所以我可以檢查moveToFirst()是否返回false來檢查光標是否失敗? – 2014-10-07 14:13:25

+0

如果失敗,你的意思是「不包含任何行」,那麼是的。 – laalto 2014-10-07 14:14:06

+0

啊,是的。這就是我的意思,非常感謝!它現在有效。 – 2014-10-07 14:16:46