gpt4 book ai didi

android - 无法从 CursorWindow 读取行和列

转载 作者:行者123 更新时间:2023-11-29 19:06:08 28 4
gpt4 key购买 nike

我正在尝试用我的数据库 SQLite 中的数据填充一个二维数组。但是会发生以下情况:

顺便说一下,这是我第一次使用 SQLite,我试图找出是否有类似“结果集”或“数据表”的东西......我找到了所谓的“游标” .好的,我开始使用它...在每个表中插入一行(一切正常)但是现在当我在我的主题表中插入另一行时,当我尝试在游标中导航时应用程序崩溃。

E/CursorWindow: Failed to read row 6, column 6 from a CursorWindow which has 12 rows, 6 columns.

我的表只有 6 列,至于数据,同一个应用程序显示它有 2 行,但由于某种原因它只读取第一行的数据而其他行没有。

public String[][] getMaterias(){
String[][] materias = new String[rows][6];
Cursor cursor = admin.selectLog(DBScheme.Tabla_Materias);
cursor.moveToFirst();
try {
for(int f = 0; f < rows; f++){
for(int c = 0; c < 6; c++){
materias[f][c] = cursor.getString(cursor.getPosition());
cursor.moveToNext();
}
}
}catch (IllegalStateException ex){
ex.printStackTrace();
}
return materias;
}

我非常怀疑我是否必须做一些像更改数据库版本这样的事情,因为我没有触及数据库的模式,我唯一做的就是添加另一行数据。我该如何解决这个问题?

最佳答案

E/CursorWindow: Failed to read row 6, column 6 from a CursorWindow which has 12 rows, 6 columns.

上面的信息是非常解释性的,但你需要考虑偏移量。也就是说,您有一个 12 行 6 列的 Cursor(来自一个 12 行 6 列的 CursorWindow)。

这意味着您可以为列使用偏移量 05,并且没有第 6 列(偏移量)。

根据 materias[f][c] = cursor.getString(cursor.getPosition()); 使用位置作为列索引,如果行数超过游标中的内容超出了表中的列数。

您可能希望将以下内容不仅视为问题的解决方案,而且可能是更具适应性的解决方案(即不依赖固定/硬编码数字,因为行数和列数已确定根据光标)

public String[][] getMaterias(){
Cursor cursor = admin.selectLog(DBScheme.Tabla_Materias);
String[][] materias = new String[cursor.getCount()][cursor.getColumnCount()];

while(cursor.moveToNext())
for(int c = 0; c < cursor.getColumnCount(); c++){
materias[cursor.getPosition()][c] = cursor.getString(c);
}
}
return materias;
}

甚至可以考虑通过传递游标(任何游标)使其更加通用:-

public String[][] getMaterias(Cursor cursor){
String[][] materias = new String[cursor.getCount()][cursor.getColumnCount()];

while(cursor.moveToNext())
for(int c = 0; c < cursor.getColumnCount(); c++){
materias[cursor.getPosition()][c] = cursor.getString(c);
}
}
return materias;
}

关于android - 无法从 CursorWindow 读取行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47161562/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com