jak zmienić tę logikę, aby działała z więcej niż 170 rzędami.Android SQLite zawieszał się po 170 wierszach
// Getting All test
public List<Test> getAllTests(String str) {
List<Test> testList = new ArrayList<Test>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_TESTS;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
//select rows by input string
if(cursor.getString(1).equals(str)){
Test test = new Test();
test.setId(Integer.parseInt(cursor.getString(0)));
test.setTest(cursor.getString(1));
test .setResult(Integer.parseInt(cursor.getString(2)));
// Adding test to list
testList.add(test);
}
} while (cursor.moveToNext());
}
//close database
db.close();
//return list data
return testList;
}
Chcę zaznaczyć wszystkie wiersze według ciągu wejściowego. To dzieło logika doskonale z 150 wierszy, ale po 160 prac powoli i katastrofy na 170 wierszy
Dlaczego don czy w swojej prośbie używasz klauzuli WHERE? –
Próbuję z kursorem kursora = db.rawQuery ("SELECT * FROM" + TABLE_TESTS + "WHERE name =" + str, null); ale rozbił się –
Jaka jest awaria, którą widzisz? Z opisu "po 160 pracy wolno i awarii na 170 wierszy" zgadłaby aplikacja nie odpowiada, aw tym przypadku problem jest prawdopodobnie gdzie indziej, lub po prostu, że dzwonisz kod bazy danych w wątku UI. – laalto