【发布时间】:2014-06-28 16:06:06
【问题描述】:
我正在尝试从 Sqlite 的数据库中获取数据。 首先将行插入到 String[] 中,然后将 String[] 插入到 arraylist 中,最后返回 arraylist 以在其他类中使用。
public ArrayList<String[]> getWeekUni() {
SQLiteDatabase db = helper.getWritableDatabase();
String[] columns = { MenuDataBase.SOPA, MenuDataBase.FONDO1,
MenuDataBase.REFRESCO, MenuDataBase.CALORIAS, };
ArrayList<String[]> weekdays = new ArrayList<String[]>();
String[] rowDay = new String[4];
Cursor cursor = db.query(MenuDataBase.TABLE_UNI, columns, null, null,
null, null, null);
while (cursor.moveToNext()) {
cursor.moveToNext();
int index1 = cursor.getColumnIndex(MenuDataBase.SOPA);
int index2 = cursor.getColumnIndex(MenuDataBase.FONDO1);
int index3 = cursor.getColumnIndex(MenuDataBase.REFRESCO);
int index4 = cursor.getColumnIndex(MenuDataBase.CALORIAS);
rowDay[0] = cursor.getString(index1);
rowDay[1] = cursor.getString(index2);
rowDay[2] = cursor.getString(index3);
rowDay[3] = cursor.getString(index4);
Log.d("TEST", rowDay[0]+" Get week");
Log.d("TEST", rowDay[1]+" Get week");
int i = 0;
weekdays.add(rowDay);
Log.d("TEST",Integer.toString(weekdays.size()));
Log.d("TEST", weekdays.get(i)[0].toString());
Log.d("TEST", weekdays.get(i)[1].toString());
i++;
}
Log.d("TEST", weekdays.get(0)[0].toString()+" weekdays");
Log.d("TEST", weekdays.get(0)[1].toString()+" weekdays");
Log.d("TEST", weekdays.get(3)[0].toString()+" weekdays");
Log.d("TEST", weekdays.get(3)[1].toString()+" weekdays");
db.close();
return weekdays;
}
我的日志猫是这样的:
06-28 10:54:44.160: D/TEST(13577): Semola Get week
06-28 10:54:44.160: D/TEST(13577): Garbanzos a la Americana Get week
06-28 10:54:44.160: D/TEST(13577): 1
06-28 10:54:44.160: D/TEST(13577): Semola
06-28 10:54:44.160: D/TEST(13577): Garbanzos a la Americana
06-28 10:54:44.160: D/TEST(13577): Juliana Get week
06-28 10:54:44.160: D/TEST(13577): Aeropuerto Get week
06-28 10:54:44.160: D/TEST(13577): 2
06-28 10:54:44.160: D/TEST(13577): Juliana
06-28 10:54:44.160: D/TEST(13577): Aeropuerto
06-28 10:54:44.160: D/TEST(13577): Chupe de Carne Get week
06-28 10:54:44.160: D/TEST(13577): Ajiaco con Hamburguesa de Casa Get week
06-28 10:54:44.160: D/TEST(13577): 3
06-28 10:54:44.160: D/TEST(13577): Chupe de Carne
06-28 10:54:44.160: D/TEST(13577): Ajiaco con Hamburguesa de Casa
06-28 10:54:44.160: D/TEST(13577): Moron Get week
06-28 10:54:44.160: D/TEST(13577): Trigo Guizado con Pollito al Horno Get week
06-28 10:54:44.160: D/TEST(13577): 4
06-28 10:54:44.160: D/TEST(13577): Moron
06-28 10:54:44.160: D/TEST(13577): Trigo Guizado con Pollito al Horno
06-28 10:54:44.160: D/TEST(13577): Crema de Verduras Get week
06-28 10:54:44.160: D/TEST(13577): Picante de Carne Get week
06-28 10:54:44.160: D/TEST(13577): 5
06-28 10:54:44.160: D/TEST(13577): Crema de Verduras
06-28 10:54:44.160: D/TEST(13577): Picante de Carne
06-28 10:54:44.160: D/TEST(13577): Crema de Verduras
06-28 10:54:44.160: D/TEST(13577): Picante de Carne weekdays
06-28 10:54:44.160: D/TEST(13577): Crema de Verduras weekdays
06-28 10:54:44.160: D/TEST(13577): Picante de Carne weekdays
06-28 10:54:44.170: D/TEST(13577): Crema de Verduras weekdays
这里的问题是,在 while 循环结束后,工作日对象将它们的值设置为好像它们都是相同的,您可以在我显示的最后一个日志中看到这一点
我真的不知道为什么会这样,我已经尝试将 while 循环更改为 for 循环
【问题讨论】:
-
记住也要关闭你的光标!
标签: java android sqlite arraylist