开始在 Android 中与 SQLite 打交道。我了解如何找出游标中的数据量,但不了解如何显示此数据:
userCursor = db.rawQuery("select " + COLUMN_NAME + " from " + TABLE, null);//Получаем все данные из таблицы TABLE(users)
textBD.setText(Integer.toString(userCursor.getCount()));// В getCount получили сколько записей содержит курсор
userCursor.moveToFirst();//Перевели курсор к первому значению
完整代码:
@Override
public void onClick(View v) {
userCursor = db.rawQuery("select " + COLUMN_NAME + " from " + TABLE, null);//Получаем все данные из таблицы TABLE(users)
textBD.setText(Integer.toString(userCursor.getCount()));// В getCount получили сколько записей содержит курсор
userCursor.moveToFirst();//Перевели курсор к первому значению
if (userCursor.moveToFirst()) {
while (!userCursor.isAfterLast()) {
String data = userCursor.getString(userCursor.getColumnIndex("data"));
// обрабатываем data
// двигаемся к следующему значению
userCursor.moveToNext();
}
}
// не забывайте закрыть курсор
userCursor.close();
Toast toast = Toast.makeText(getApplicationContext(),
"ОКЕЙ", Toast.LENGTH_SHORT);
toast.show();
}
});
}
错误:
Process: com.example.mysql_legkosuka, PID: 10864
java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.database.CursorWindow.nativeGetString(Native Method)
at android.database.CursorWindow.getString(CursorWindow.java:438)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
at com.example.mysql_legkosuka.MainActivity$1.onClick(MainActivity.java:51)
at android.view.View.performClick(View.java:4756)
at android.view.View$PerformClick.run(View.java:19749)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
要从游标中获取数据,您需要遍历它:
如果您使用的是列表,那么您可以使用 SimpleCursorAdapter - 好吧,这可能是一个简单的例子
如果您想做一些特别的事情,那么您可以使用
RecyclerView+Cursor,但是您必须跟踪更改等。(不是最简单的任务)。