我需要从我的SQLite数据库中获取所有信息并将其存储在数组列表中,或者如果有更好的方法,则需要其他方式。我的数据库有6列,这是我试图提取数据并将其存储在Arraylist索引中的方式;
db.open();
for(int i = 0; i<= amount; i++)
{
Cursor c = db.fetchAllNotes();
if (c.moveToFirst())
{
do {
mid = c.getString(0);
place =c.getString(1);
info =c.getString(2);
coordl1 =c.getString(3);
coordl2 =c.getString(4);
colour =c.getString(5);
//code here to store each string in an Array index
mapSetupList.add(mid,place,info,coordl1,coordl2,colour);
}while (c.moveToNext());
}
}
db.close();
我知道如何创建一个数组列表,但我不知道如何在一个索引中存储6个字符串,我尝试使用2D Arraylists,但这似乎太复杂了,我认为这不是正确的方法去做吧。有没有更好的方法来做到这一点,如果不是如何使用Arraylists?
答案 0 :(得分:2)
如何创建一个自己定义的Object,将所有列包装为属性?
public class Foo {
private int id; // alternative to id column in db
private String type;
private String date;
...
public void setId(int id) { // setter
this.id = id;
}
public int getId() { // getter
return this.id;
}
}
然后创建ArrayList<Foo>
,现在您只需将 SQLite 中的数据保存到ArrayList中:
public void store() {
Cursor c = null; // first declare and initialise appropriate objects
ArrayList<Foo> foos = new ArrayList<Foo>();
Foo member = null;
try {
c = db.rawQuery(query, whereArgs); // perform query
if (c.moveToFirst()) { // move cursor to first row because implicitly
do { // cursor is position before first row
member = new Foo(); // for each row create new Foo
member.setId(c.getInt(0)); // initialise properties
member.setType(c.getString(1));
member.setDate(c.getString(2));
...
foos.add(member); // add Foo into ArrayList
} while (c.moveToNext()); // it moves cursor to next row
}
}
finally { // in finally block release datasource(s), cursor(s)
if (c != null) {
c.close();
}
if (db != null && db.isOpen()) {
db.close();
}
}
}
注意:我推荐这种方法。它清晰,安全,有效。不要忘记在完成工作后释放任何数据源,游标以避免通常抛出的异常,例如游标已经打开,数据库已经关闭等等。
我不确定类示例,使用已定义的对象和 在我尝试这个之前,你能详细说明一下吗?谢谢 你!
因此,getter和setter是“通常”用于操纵Object的特性来保存 Encapsulation 的方法 - 在OOP中非常重要。 Setter用于初始化属性和getter以获取Object的属性。
现在我为你写了一个从sqlite到ArrayList的商店数据存储方法的例子。有这一行:
member.setId(c.getInt(0));
其中setId(c.getInt(0))
是 Foo对象的设置者,其中一个Integer作为参数,现在您将使用此方法填充来自Cursor
的数据的ID值。
答案 1 :(得分:0)
创建一个包含您喜欢的所有信息的类,然后创建它的实例,然后将该实例添加到ArrayList。