2017-01-07 3 views
4

から行0、列0を読み取れませんでした、私はsqliteのdbhelperクラスで同じことを行うには、次のコードを使用:java.lang.IllegalStateException:私はテーブルからすべてのデータをフェッチする必要がCursorWindow

public Cursor getData() { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor res = db.rawQuery("select * from " + PRODUCT_DETAILS_TABLE, null); 
     return res; 
    } 

は今、私は次のように私の活動にカーソルを使用してデータを取得しています:

public HashMap<String, ArrayList<CartModal>> getDatas() { 

      map = new HashMap<String, ArrayList<CartModal>>(); 
      stored_data = new ArrayList<CartModal>(); 
      Cursor cartdb = dbHelper.getData(); 
      if (cartdb != null && cartdb.getCount() > 0) { 
       if (cartdb.moveToFirst()) { 
        do { 
         String mloggedinuser = cartdb.getString(0); 
         String mname = cartdb.getString(1); 
         String email = cartdb.getString(2); 
         String mobile = cartdb.getString(3); 
         String about = cartdb.getString(4); 
         String pid = cartdb.getString(5); 
         String refnum = cartdb.getString(6); 
         String size = cartdb.getString(7); 
         String weight = cartdb.getString(8); 
         String price = cartdb.getString(9); 
         String catid = cartdb.getString(10); 
         String image = cartdb.getString(11); 

         CartModal cartarray = new CartModal(mloggedinuser, mname, email, mobile, about, pid, refnum, size, weight, price, catid, image); 
         stored_data.add(cartarray); 
         keys = mname; 
         map.put(mname, stored_data); 
        } while (cartdb.moveToPosition(stored_data.size())); 
        cartdb.close(); 
       } 
      } 
      return map; 
     } 

私は次のように私はエラーを取得しています上記のプログラムを実行すると:

E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: sdetech.io.brouchuretabproject, PID: 2434 
        java.lang.IllegalStateException: Couldn't read row 0, col 0 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 sdetech.io.brouchuretabproject.Fragments.Cart.getDatas(Cart.java:58) 
         at sdetech.io.brouchuretabproject.Fragments.Cart.onCreateView(Cart.java:42) 
         at android.support.v4.app.Fragment.performCreateView(Fragment.java:2087) 
         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1113) 
         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295) 
         at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801) 
         at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682) 
         at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:541) 
         at android.os.Handler.handleCallback(Handler.java:739) 
         at android.os.Handler.dispatchMessage(Handler.java:95) 
         at android.os.Looper.loop(Looper.java:148) 
         at android.app.ActivityThread.main(ActivityThread.java:5417) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

私は多くの解決策をstackoverflow(android java.lang.IllegalStateException: Couldn't read row 0, col 0 from CursorWindow)で行ってきましたが、この問題の解決には役に立たなかったのです。 解決策を提案してください。

+0

あなたは 'ListView'が、その後' getDatas'メソッドを削除し、ちょうど 'SimpleCursorAdapter' – pskink

+0

を使用yhe上のデータを表示したい場合、私はコードで論理的に間違って何かを見つけることができないんだけど、あなたかもしれブレークポイントを置いてコードを手動でデバッグし、どこがうまくいかないかを調べることができます。 –

+0

あなたは 'stored_data'のインスタンスを1つしか持たず、そのインスタンスに新しいデータを何度も追加しています – pskink

答えて

0

私はすべてのことをやっていました。しかし、問題は、私はbase64 ecoded stringとしてデータを保存していました。そのデータをフェッチすると、違法な例外が表示されます。 誰かがbase64でエンコードされた画像をsqliteの文字列として保存する方法を知っている方は、以下に返信してください。

ありがとう

関連する問題