【问题标题】:java.lang.IllegalStateException: Couldn't read row 1, col 4 from CursorWindowjava.lang.IllegalStateException:无法从 CursorWindow 读取第 1 行第 4 列
【发布时间】:2017-12-17 02:56:44
【问题描述】:

我正在尝试从 SQLite 数据库中获取值并将它们添加到 ArrayList。我不知道问题是什么。如果这些代码部分没有问题,我可以发布更多代码。

@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);
    }

【问题讨论】:

    标签: android sqlite illegalstateexception


    【解决方案1】:

    一个可能的原因是您通过添加 notlar 列更改了创建表的 SQL。

    但是,仅仅更改该行并不会进行更改,因为数据库助手的 onCreate 方法仅在创建数据库时运行。

    另外,在listAll 方法中,c.moveToFirst(); 行很可能不需要,因为它会跳过第一行。因此,在第 1 行而不是第 0 行显示问题的消息。

    要解决问题,

    1) 修改代码删除c.moveToFirst();

    2) 执行以下操作之一:-

    • 删除应用的数据。
    • 卸载应用程序。

    3) 重新运行应用程序。

    【讨论】:

      猜你喜欢
      • 2015-08-11
      • 1970-01-01
      • 2017-05-22
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      • 2014-02-21
      • 1970-01-01
      相关资源
      最近更新 更多