У меня проблема с чтением данных из SQLite, я хочу сохранить всю информацию в массив объектов (узлов), которые я уже определил.Получить все строки SQLite Android Studio
Мой конструктор и структура для этого объекта:
public node(int id, String name, String address, double x, double y, String type, String date){
//Initialization
//....
}
Примечания: Класс этого объекта, очевидно, уже определил атрибуты, сеттер и добытчик. И база данных имеет одинаковую структуру этого объекта (Int, String, String, Double, Double, String, String).
Итак, мой метод, чтобы получить все строки и хранить их в моем массиве:
public nodo[] getNodes() {
String selectQuery = "SELECT * FROM " + NAME_NODES;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
node[] nodes = new node[cursor.getCount()];
int con = 0;
if (cursor.moveToFirst()) {
while (cursor.moveToNext()) {
node temp = new node(
cursor.getInt(1),
cursor.getString(2),
cursor.getString(3),
cursor.getDouble(4),
cursor.getDouble(5),
cursor.getString(6),
cursor.getString(7));
nodes[con++] = temp;
}
}
cursor.close();
db.close();
Log.d(TAG, "SQLite data: " + nodes.toString());
return nodes;
}
А потом в другом классе я называю этот предыдущий метод, что-то вроде:
node[] nodes = db.getNodes();
String temp = node[0].getName();
Но после того, как что я получаю ошибку:
<code>E/CursorWindow: Failed to read row 1, column 7 from a CursorWindow which has 2 rows, 7 columns.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.motusk.AppMonitoreo, PID: 4410
java.lang.IllegalStateException: Couldn't read row 1, col 7 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.motus.AppMonitoreo.Controladores.SQLiteHandler.getNodes(SQLiteHandler.java:186)</code>
Я думаю, что основная проблема заключается в использовании курсора
пожалуйста, проверьте, что вы получите в Cursor = курсор db.rawQuery (SelectQuery, нуль); курсор? и индекс курсора начинается с 0, и вы начинаете его с 1. Пожалуйста, проверьте –
[щелкните по этому значку. я надеюсь, что это поможет вам] (http://stackoverflow.com/a/41615670/7399521) –
Да, было то, что индекс курсора начинается с 0, но теперь я получаю только 1 строку –