java.lang.IllegalStateException: 无法从 CursorWindow 读取第 1 行第 4 列
java.lang.IllegalStateException: Couldn't read row 1, col 4 from CursorWindow
我正在尝试从 SQLite 数据库中获取值并将它们添加到 ArrayList。我不知道是什么问题。如果这些代码部分没有问题,我可以 post 更多代码。
@Override
public void onCreate(SQLiteDatabase db) {
String sql ="create table tablo(id integer primary key,tipi text,turu text, miktar text, notlar text ) ";
db.execSQL(sql);
public List<String> listAll(){
List<String>liste = new ArrayList<String>();
Cursor c = db.rawQuery("select * from tablo",null);
c.moveToFirst();
while (c.moveToNext()){
int id = c.getInt(0);
String tipi=c.getString(1);
String turu = c.getString(2);
String miktar = c.getString(3);
String notlar =c.getString(4);
Data d = new Data(id,tipi,turu,miktar,notlar);
String toSt =d.toString();
liste.add(toSt);
}
一个可能的原因是您通过添加 notlar 列更改了创建 table 的 SQL。
然而,仅更改该行不会进行更改,因为数据库助手的 onCreate
方法仅在创建数据库时运行。
此外,在 listAll
方法中,行 c.moveToFirst();
很可能不需要,因为它会跳过第一行。因此,消息指示第 1 行而不是第 0 行出现问题。
要解决这些问题,
1) 修改代码删除c.moveToFirst();
.
2) 执行以下操作之一:-
- 删除应用程序的数据。
- 卸载应用程序。
3) 重新运行应用程序。
我正在尝试从 SQLite 数据库中获取值并将它们添加到 ArrayList。我不知道是什么问题。如果这些代码部分没有问题,我可以 post 更多代码。
@Override
public void onCreate(SQLiteDatabase db) {
String sql ="create table tablo(id integer primary key,tipi text,turu text, miktar text, notlar text ) ";
db.execSQL(sql);
public List<String> listAll(){
List<String>liste = new ArrayList<String>();
Cursor c = db.rawQuery("select * from tablo",null);
c.moveToFirst();
while (c.moveToNext()){
int id = c.getInt(0);
String tipi=c.getString(1);
String turu = c.getString(2);
String miktar = c.getString(3);
String notlar =c.getString(4);
Data d = new Data(id,tipi,turu,miktar,notlar);
String toSt =d.toString();
liste.add(toSt);
}
一个可能的原因是您通过添加 notlar 列更改了创建 table 的 SQL。
然而,仅更改该行不会进行更改,因为数据库助手的 onCreate
方法仅在创建数据库时运行。
此外,在 listAll
方法中,行 c.moveToFirst();
很可能不需要,因为它会跳过第一行。因此,消息指示第 1 行而不是第 0 行出现问题。
要解决这些问题,
1) 修改代码删除c.moveToFirst();
.
2) 执行以下操作之一:-
- 删除应用程序的数据。
- 卸载应用程序。
3) 重新运行应用程序。