Bitte sagen Sie mir, wo mein Fehler ist. Im Wert steigen.
Was ist der Wert von cursor.getCount() ?
– Anirudh
11. April 2012 um 17:50 Uhr
@Anirudh Ich verstehe nicht. Könnten Sie mir das bitte erklären?
– Jo
12. April 2012 um 4:19 Uhr
Können Sie diese Anweisung in Ihren Code einfügen – Log.d (“TAG”, “Abgerufene Zeilen – ” + cursor.getCount()); und sagen Sie mir, welchen Wert sehen Sie? Das ist die Anzahl der Zeilen, die der Cursor abgerufen hat. Tun Sie dies, bevor Sie den Cursor in der Methode queueAll () zurückgeben.
– Anirudh
12. April 2012 um 22:49 Uhr
@Anirudh Wenn ich es vor queueAll() mache, wird es NullPointerException bekommen. Wenn ich es nach dem Cursor = fileSQLiteAdapter.queueAll(); mache, wird es 0 bekommen.
Cursor cursor = db.rawQuery("select * from table",null);
Und für List<String>:
if (cursor.moveToFirst()) {
while (!cursor.isAfterLast()) {
String name = cursor.getString(cursor.getColumnIndex(countyname));
list.add(name);
cursor.moveToNext();
}
}
Ich würde diese Lösung bei Bedarf selbst verwenden. Allerdings tue ich while (!cursor.isAfterLast())
– ArtiomLK
22. November 2016 um 5:30 Uhr
oder: DatabaseUtils.dumpCursorToString(readableDB.rawQuery(“select * from table”,null))
– Malachiasz
4. April 2018 um 13:45 Uhr
Suragch
Verwenden der integrierten Methode von Android
Wenn Sie jede Spalte und jede Zeile wollen, dann geben Sie einfach weiter null für die SQLiteDatabasecolumn und selection Parameter.
Die anderen Antworten verwenden rawQueryaber Sie können das integrierte Android verwenden SQLiteDatabase. Das Dokumentation zum query sagt, dass Sie einfach vorbeigehen können null zum selection Parameter, um alle Zeilen zu erhalten.
selection Das Übergeben von null gibt alle Zeilen für die angegebene Tabelle zurück.
Und während Sie auch passieren können null für die column Um alle Spalten zu erhalten (wie im obigen Einzeiler), ist es besser, nur die Spalten zurückzugeben, die Sie benötigen. Das Dokumentation sagt
columns Das Übergeben von null gibt alle Spalten zurück, was nicht empfohlen wird, um zu verhindern, dass Daten aus dem Speicher gelesen werden, die nicht verwendet werden.
Beispiel
SQLiteDatabase db = mHelper.getReadableDatabase();
String[] columns = {
MyDatabaseHelper.COLUMN_1,
MyDatabaseHelper.COLUMN_2,
MyDatabaseHelper.COLUMN_3};
String selection = null; // this will select all rows
Cursor cursor = db.query(MyDatabaseHelper.MY_TABLE, columns, selection,
null, null, null, null, null);
ArtiomLK
Dies ist fast die gleiche Lösung wie die anderen, aber ich dachte, es wäre gut, sich verschiedene Möglichkeiten anzusehen, um dasselbe Ergebnis zu erzielen, und ein wenig zu erklären:
Wahrscheinlich haben Sie die Tabellenname-String-Variable initialisiert, als Sie den DBHandler aufgerufen haben, also wäre es so etwas wie;
private static final String MYDATABASE_TABLE = "anyTableName";
Dann, wo immer Sie versuchen, alle Tabellenzeilen abzurufen;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from " + MYDATABASE_TABLE, null);
List<String> fileName = new ArrayList<>();
if (cursor.moveToFirst()){
fileName.add(cursor.getString(cursor.getColumnIndex(COLUMN_NAME)));
while(cursor.moveToNext()){
fileName.add(cursor.getString(cursor.getColumnIndex(COLUMN_NAME)));
}
}
cursor.close();
db.close();
Ehrlich gesagt gibt es viele Möglichkeiten, dies zu tun,
Sam Khalil
Ich habe mich mit dem gleichen Problem beschäftigt! Ich denke, Ihr Problem hängt damit zusammen, wo Sie die Variable identifizieren, mit der Sie die von Ihnen zurückgegebene ArrayList füllen. Wenn Sie es innerhalb der Schleife definieren, wird es immer auf die letzte Zeile in der Tabelle in der Datenbank verweisen. Um dies zu vermeiden, müssen Sie es außerhalb der Schleife identifizieren:
String name;
if (cursor.moveToFirst()) {
while (cursor.isAfterLast() == false) {
name = cursor.getString(cursor
.getColumnIndex(countyname));
list.add(name);
cursor.moveToNext();
}
}
Aktualisieren readFileFromSQLite() Methode wie folgt:
public ArrayList<String> readFileFromSQLite() {
fileName = new ArrayList<String>();
fileSQLiteAdapter = new FileSQLiteAdapter(FileChooser.this);
fileSQLiteAdapter.openToRead();
cursor = fileSQLiteAdapter.queueAll();
if (cursor != null) {
if (cursor.moveToFirst()) {
do
{
String name = cursor.getString(cursor.getColumnIndex(FileSQLiteAdapter.KEY_CONTENT1));
fileName.add(name);
} while (cursor.moveToNext());
}
cursor.close();
}
fileSQLiteAdapter.close();
return fileName;
}
roshan posakya
Cursor cursor = myDb.viewData();
if (cursor.moveToFirst()){
do {
String itemname=cursor.getString(cursor.getColumnIndex(myDb.col_2));
String price=cursor.getString(cursor.getColumnIndex(myDb.col_3));
String quantity=cursor.getString(cursor.getColumnIndex(myDb.col_4));
String table_no=cursor.getString(cursor.getColumnIndex(myDb.col_5));
}while (cursor.moveToNext());
}
cursor.requery();
Spaß
public List<String> getAllData(String email)
{
db = this.getReadableDatabase();
String[] projection={email};
List<String> list=new ArrayList<>();
Cursor cursor = db.query(TABLE_USER, //Table to query
null, //columns to return
"user_email=?", //columns for the WHERE clause
projection, //The values for the WHERE clause
null, //group the rows
null, //filter by row groups
null);
// cursor.moveToFirst();
if (cursor.moveToFirst()) {
do {
list.add(cursor.getString(cursor.getColumnIndex("user_id")));
list.add(cursor.getString(cursor.getColumnIndex("user_name")));
list.add(cursor.getString(cursor.getColumnIndex("user_email")));
list.add(cursor.getString(cursor.getColumnIndex("user_password")));
// cursor.moveToNext();
} while (cursor.moveToNext());
}
return list;
}
Willkommen beim Posten auf Stack Overflow. Bitte versuchen Sie, den Antworten Erklärungen hinzuzufügen. Tipps & Verbesserungen: Stellen Sie sicher, dass der Cursor nicht null ist, schließen Sie den Cursor in einem finally-Block und schreiben Sie einfach while(cursor.moveToNext()) {…}, if-do-while ist unnötig.
– Elletlar
2. August 2018 um 13:55 Uhr
10553600cookie-checkHolen Sie sich alle Zeilen von SQLiteyes
Was ist der Wert von cursor.getCount() ?
– Anirudh
11. April 2012 um 17:50 Uhr
@Anirudh Ich verstehe nicht. Könnten Sie mir das bitte erklären?
– Jo
12. April 2012 um 4:19 Uhr
Können Sie diese Anweisung in Ihren Code einfügen – Log.d (“TAG”, “Abgerufene Zeilen – ” + cursor.getCount()); und sagen Sie mir, welchen Wert sehen Sie? Das ist die Anzahl der Zeilen, die der Cursor abgerufen hat. Tun Sie dies, bevor Sie den Cursor in der Methode queueAll () zurückgeben.
– Anirudh
12. April 2012 um 22:49 Uhr
@Anirudh Wenn ich es vor queueAll() mache, wird es NullPointerException bekommen. Wenn ich es nach dem Cursor = fileSQLiteAdapter.queueAll(); mache, wird es 0 bekommen.
– Jo
15. April 2012 um 9:01 Uhr
Versuche dies…. androidtipsbynama.blogspot.in/2012/04/…
– Vielfraß
17. April 2012 um 5:47 Uhr