Java 如何将SQLite表行保存到数组中?
我尝试了许多不同的方法来实现这一点,但基本上,当我从数据库中获取所有数据时,我希望将其存储在一个数组中,但我不知道如何在从数据库读取数据时遍历索引。下面是我获取数据并将其添加到阵列的方式:Java 如何将SQLite表行保存到数组中?,java,android,sqlite,Java,Android,Sqlite,我尝试了许多不同的方法来实现这一点,但基本上,当我从数据库中获取所有数据时,我希望将其存储在一个数组中,但我不知道如何在从数据库读取数据时遍历索引。下面是我获取数据并将其添加到阵列的方式: public void makeObjects(){ i =0; db.open(); for(int j = 0; j< amount; j++) { objarray.add(o); } Cursor c = db.fetchAll
public void makeObjects(){
i =0;
db.open();
for(int j = 0; j< amount; j++)
{
objarray.add(o);
}
Cursor c = db.fetchAllNotes();
if (c.moveToFirst())
{
do {
objarray.get(i).setid(c.getString(0));
objarray.get(i).settitle(c.getString(1));
objarray.get(i).setinfo(c.getString(2));
objarray.get(i).setlat(c.getString(3));
objarray.get(i).setlon(c.getString(4));
objarray.get(i).setmc(c.getString(5));
i++;
} while (c.moveToNext());
}
db.close();
}
public void makeObjects(){
i=0;
db.open();
对于(int j=0;j
为了测试和简单起见,我的数据库中有两行,我有一个For循环,它向数组中添加了两个新索引,但是当我将数组的内容打印到
logcat
时,我看到两个索引都有最后一个从数据库读取的数据,第二行是两次。如何确保第一行输入索引0,第二行输入索引1?您需要为要引用的数组的每个元素创建一个新对象,而不是让它们都引用同一个对象。您需要为要引用的数组的每个元素创建一个新对象,而不是让它们都引用同一个对象
我尝试了很多不同的方法来做这件事,但基本上当我
我希望将数据库中的所有数据存储在一个数组中
如何创建在数据库中显示表的自己的对象?此对象将具有一些属性,这些属性将在表中显示列
下面是如何将db中的每一行保存到对象列表中的算法:
光标中
光标
,并为每一行创建新对象并保存它
进入对象列表public List<Foo> getAll() {
List<Foo> foos = new ArrayList<Foo>();
Foo member = null;
Cursor c = null;
try {
c = db.rawQuery("Select * from Table", null);
if (c.moveToFirst()) {
do {
member = new Foo();
member.setId(c.getInt(c.getColumnIndex("id")));
member.setName(c.getString(c.getColumnIndex("name")));
foos.add(member);
} while (c.moveToNext());
}
return foos;
}
finally {
if (c != null) {
c.close();
}
}
}
public List getAll(){
List foos=new ArrayList();
Foo成员=null;
光标c=null;
试一试{
c=db.rawQuery(“从表中选择*”,空);
if(c.moveToFirst()){
做{
成员=新的Foo();
setId(c.getInt(c.getColumnIndex(“id”));
setName(c.getString(c.getColumnIndex(“name”));
foos.add(成员);
}而(c.moveToNext());
}
返回foos;
}
最后{
如果(c!=null){
c、 close();
}
}
}
我尝试了很多不同的方法来做这件事,但基本上当我
我希望将数据库中的所有数据存储在一个数组中
如何创建在数据库中显示表的自己的对象?此对象将具有一些属性,这些属性将在表中显示列
下面是如何将db中的每一行保存到对象列表中的算法:
光标中
光标
,并为每一行创建新对象并保存它
进入对象列表public List<Foo> getAll() {
List<Foo> foos = new ArrayList<Foo>();
Foo member = null;
Cursor c = null;
try {
c = db.rawQuery("Select * from Table", null);
if (c.moveToFirst()) {
do {
member = new Foo();
member.setId(c.getInt(c.getColumnIndex("id")));
member.setName(c.getString(c.getColumnIndex("name")));
foos.add(member);
} while (c.moveToNext());
}
return foos;
}
finally {
if (c != null) {
c.close();
}
}
}
public List getAll(){
List foos=new ArrayList();
Foo成员=null;
光标c=null;
试一试{
c=db.rawQuery(“从表中选择*”,空);
if(c.moveToFirst()){
做{
成员=新的Foo();
setId(c.getInt(c.getColumnIndex(“id”));
setName(c.getString(c.getColumnIndex(“name”));
foos.add(成员);
}而(c.moveToNext());
}
返回foos;
}
最后{
如果(c!=null){
c、 close();
}
}
}
我希望这会对您有所帮助。此函数读取数据库并将行作为对象返回。此函数在扩展SQLiteOpenHelper的类中编写
ParamsBMI getTemplate(String strPersonName)
{
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_BMI_PARAMS, new String[] { KEY_PERSON_NAME, KEY_GENDER_MALE, KEY_DOB_YEAR, KEY_DOB_MOY, KEY_DOB_DOM, KEY_HEIGHT_UNIT, KEY_WEIGHT_UNIT, KEY_HEIGHT_CMS, KEY_HEIGHT_FT, KEY_HEIGHT_INCHES, KEY_WEIGHT_KGS,
KEY_WEIGHT_POUNDS }, KEY_PERSON_NAME + "=?", new String[] { strPersonName }, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
ParamsBMI paramsBMI = new ParamsBMI();
paramsBMI.setPersonName(cursor.getString(0));
boolean bGenderMale = (cursor.getInt(1) == 1) ? true : false;
paramsBMI.setGenderMale(bGenderMale);
paramsBMI.setDOBYear(Integer.parseInt(cursor.getString(2)));
paramsBMI.setDOBMonthOfYear(Integer.parseInt(cursor.getString(3)));
paramsBMI.setDOBDayOfMonth(Integer.parseInt(cursor.getString(4)));
paramsBMI.setHeightUnit(Integer.parseInt(cursor.getString(5)));
paramsBMI.setWeightUnit(Integer.parseInt(cursor.getString(6)));
paramsBMI.setHeightCms(Float.parseFloat(cursor.getString(7)));
paramsBMI.setHeightFt(Float.parseFloat(cursor.getString(8)));
paramsBMI.setHeightInches(Float.parseFloat(cursor.getString(9)));
paramsBMI.setWeightKgs(Float.parseFloat(cursor.getString(10)));
paramsBMI.setWeightPounds(Float.parseFloat(cursor.getString(11)));
return paramsBMI;
}
我希望这对你有帮助。此函数读取数据库并将行作为对象返回。此函数在扩展SQLiteOpenHelper的类中编写
ParamsBMI getTemplate(String strPersonName)
{
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_BMI_PARAMS, new String[] { KEY_PERSON_NAME, KEY_GENDER_MALE, KEY_DOB_YEAR, KEY_DOB_MOY, KEY_DOB_DOM, KEY_HEIGHT_UNIT, KEY_WEIGHT_UNIT, KEY_HEIGHT_CMS, KEY_HEIGHT_FT, KEY_HEIGHT_INCHES, KEY_WEIGHT_KGS,
KEY_WEIGHT_POUNDS }, KEY_PERSON_NAME + "=?", new String[] { strPersonName }, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
ParamsBMI paramsBMI = new ParamsBMI();
paramsBMI.setPersonName(cursor.getString(0));
boolean bGenderMale = (cursor.getInt(1) == 1) ? true : false;
paramsBMI.setGenderMale(bGenderMale);
paramsBMI.setDOBYear(Integer.parseInt(cursor.getString(2)));
paramsBMI.setDOBMonthOfYear(Integer.parseInt(cursor.getString(3)));
paramsBMI.setDOBDayOfMonth(Integer.parseInt(cursor.getString(4)));
paramsBMI.setHeightUnit(Integer.parseInt(cursor.getString(5)));
paramsBMI.setWeightUnit(Integer.parseInt(cursor.getString(6)));
paramsBMI.setHeightCms(Float.parseFloat(cursor.getString(7)));
paramsBMI.setHeightFt(Float.parseFloat(cursor.getString(8)));
paramsBMI.setHeightInches(Float.parseFloat(cursor.getString(9)));
paramsBMI.setWeightKgs(Float.parseFloat(cursor.getString(10)));
paramsBMI.setWeightPounds(Float.parseFloat(cursor.getString(11)));
return paramsBMI;
}
这很有道理,你能告诉我怎么做吗?这可能需要我很长时间才能弄清楚。非常感谢。如何初始化
o
?可能,初始化的右侧是您应该在第一个循环中使用的。类似于objarray.add(newwhere())代码>你是对的,一直以来我都缺少这段代码,我尝试了所有的方法,但没有(感谢你注意到这一点并帮助我解决这一问题,现在一切都正常了,一旦它允许我,我会接受这个答案!:)这确实很有道理,你能告诉我怎么做吗?这可能需要我很长时间才能弄清楚。非常感谢。如何初始化o
?可能,初始化的右侧是您应该在第一个循环中使用的。类似于objarray.add(newwhere())代码>你是对的,一直以来我都缺少这段代码,我尝试了所有的方法,但没有(谢谢你注意到这一点并帮助我解决这个问题,现在一切都正常了,一旦它允许我,我会接受这个答案!:)嘿,伙计!!谢谢你的回答,我成功地修复了它,我一直缺少一段代码!!:(:)回答得很好,谢谢,我会保留这段代码的!嘿,伙计!!谢谢你的回答,我成功地修复了它,我一直缺少一段代码!!:(:)回答得很好,谢谢,我会保留这段代码的!