2014-10-07 24 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