현재 Android 응용 프로그램에서 작업 중입니다. 4 열의 텍스트 (그냥 응용 프로그램에서 문자열로 사용하는)를 저장하는 sqlite 데이터베이스가 있습니다. 테이블에서 모든 행과 열을 반환하려고합니다. 내가 만든 테이블에 데이터를 삽입하고 adb 쉘에서 sqlite3를 사용하여 거기에 있는지 확인했습니다. 내 프로그램에서 사용하는 것과 같은 문장을 사용하고 모든 올바른 데이터가있는 모든 행을 반환합니다. 내 프로그램에서는 커서를 반복하여 ArrayList<ArrayList<String>>
형식의 모든 데이터를 저장합니다. 행에 해당하는 올바른 번호 ArrayList<String>
을 반환하지만 모두 마지막 행의 정보 만 가지고 있습니다. 여기 내 코드입니다 :응용 프로그램의 android sqlite 데이터베이스에서 모든 행을 선택하면 모든 항목의 마지막 항목이 반환됩니다
private static final String SELECT = "SELECT * FROM " + TABLE_NAME;
public ArrayList<ArrayList<String>> allRecipes()
{
ArrayList<ArrayList<String>> results = new ArrayList<ArrayList<String>>();
ArrayList<String> recipe = new ArrayList<String>();
Cursor cursor = db.rawQuery(SELECT, null);
if(cursor.moveToFirst())
{
do
{
recipe.clear();
recipe.add(cursor.getString(1));
recipe.add(cursor.getString(2));
recipe.add(cursor.getString(3));
recipe.add(cursor.getString(4));
results.add(recipe);
}while(cursor.moveToNext());
if(cursor != null && !cursor.isClosed())
cursor.close();
}
return results;
}
그때 내 프로그램의 다른 부분에 ArrayLists를 통해 반복하고 포함 된 모든 정보가 테이블에 입력 된 마지막 행의 단지 중복입니다. ArrayLists를받은 다른 메소드에서 ArrayLists를 확인한 결과 모두 같기 때문에 어떻게 든이 코드 세그먼트에서 문제가되어야한다고 가정하고 있습니다. 또한 group by 및 order by 절을 사용하여 select 문을 시도했지만 여전히 작동하지 않습니다. 올바른 매개 변수와 함께 db.query()를 사용하면 동일한 문제가 발생합니다.
에 코드를 변경해야합니다 그리고 그것은 더 나은 대신 배열 목록을 useing 클래스 레시피를 정의 할 –