2017-12-16 7 views
-2

SQLiteデータベースから値を取得してArrayListに追加しようとしています。私は問題が何であるか分からない。これらのコード部分に問題がなければ、さらにコードを投稿することができます。java.lang.IllegalStateException:CursorWindowから行1、列4を読み込めませんでした

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

答えて

0

可能性の高い原因は、あなたが notlar列を追加することで、テーブルを作成するSQLを変更したということです。

データベースの作成時にデータベースヘルパーのonCreateメソッドが実行されるため、その行だけを変更するだけでは変更が反映されません。

listAllメソッドでは、最初の行をスキップするため、c.moveToFirst();という行は望ましくない可能性が非常に高いです。したがって、

1の問題を修正する代わりに、行0

の行1で問題を示すメッセージ)c.moveToFirst();を除去するためにコードを修正します。

  • アプリケーションのデータを削除します - :

    2)は、次のいずれかの操作を行います。

  • アプリケーションをアンインストールします。

3)アプリケーションを再実行します。

関連する問題