如何浏览SQLite db中的每条记录?

时间:2010-06-08 07:44:01

标签: android sqlite

我认为这有点容易,但我仍然是Android编程的新手,所以请耐心等待。我想知道如何获取数据库中特定表中的记录(行)数。我需要这个,所以我可以创建一个循环来遍历每个记录并将其中的每一个添加到特定的数组并稍后显示它。这是来源:

db.openDataBase();            // open connection with db

Cursor c = db.getTitle(5);    // loop here through db, right now I'm fetching only one record

startManagingCursor(c);

//adding areas to the list here

Area o1 = new Area();

o1.setOrderName(c.getString(1) + c.getString(2));  

m_areas.add(o1);

db.close();

有人可以帮我这个吗? Thx提前!

3 个答案:

答案 0 :(得分:2)

SELECT COUNT(*) FROM tablename

答案 1 :(得分:1)

要获取光标中的行数,请使用getCount

要获取表中的总行数,请使用reinierpost的解决方案,或者执行选择,选择表中的所有行并从光标获取计数。我猜他的解决方案更快,除非你真的需要表中的所有行。

这样的查询将是:

SELECT * FROM footable;

答案 2 :(得分:0)

你真的不需要先计算多少;相反,创建一个db.getTitles()函数,返回所有行并返回一个Cursor,然后循环遍历Cursor。现在你可能有一个看起来像SELECT ColumnA, ColumnB FROM Titles WHERE id = 5的查询;只需复制该函数,删除参数并取消WHERE子句,使其看起来只是SELECT ColumnA, ColumnB FROM Titles

然后你的代码看起来像这样:

db.openDataBase(); // open connection with db
Cursor c = db.getTitles();
startManagingCursor(c);

//adding areas to the list here
if (c != null && c.moveToFirst()) {
    do {
        Area o1 = new Area();
        o1.setOrderName(c.getString(1) + c.getString(2));
        m_areas.add(o1);
    } while (c.next());
}

db.close();

我们检查函数是否完全返回光标,然后移动到光标的开头并开始循环,每次都转到下一个项目。有关Cursor接口的更多信息,请参阅API here,或者为了更好地了解有关数据库访问和相关设计实践的更多信息,我建议您浏览Notepad tutorial