2010-06-08 85 views
0

我认为这很容易,但我仍然是新手,因此请耐心等待。我想知道如何获取我的数据库中特定表中的记录数(行)。我需要这个,所以我可以创建一个循环来遍历每条记录,并将它们中的每一条添加到特定的Array并稍后显示。这是来源:如何浏览SQLite数据库中的每条记录?

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提前!

+0

我可以建议你在一个try块中放置'db.openDataBase();'和除db.close()之外的其他代码,并将close调用放到finally块中。它会确保您尝试关闭数据库,即使在您的代码中引发了异常。 – Skurmedel 2010-06-08 08:41:39

回答

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

1

要获得游标中的行数,请使用getCount

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

这样的查询将是:

SELECT * FROM footable;