2016-09-02 7 views
-1

この問題が何度も尋ねられました。私はここで他の人が作ったすべての記事を読んでいますが、私の場合はこの問題を本当に解決できません。サイズ0のインデックス0が要求されました。MyHelper Javaエラー

なぜこれが起こり、修正するのを手伝ってください。

これは私のコードです:

public StoreData getStore(String storeid) { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor c = db.rawQuery("select * from " + TABLE_NAME + " where " 
      + COL_STORE_ID + "=?", new String[]{storeid}); 
    StoreData data; 
    System.out.println("This is the problem"); 
    c.moveToFirst(); 
     data = new StoreData(
       c.getString(c.getColumnIndex(COL_STORE_ID)), 
       c.getString(c.getColumnIndex(COL_ACCOUNT_ID)), 
       c.getString(c.getColumnIndex(COL_KOTA_ID)), 
       c.getString(c.getColumnIndex(COL_STORE_NAME)), 
       c.getString(c.getColumnIndex(COL_STORE_MANAGER)), 
       c.getString(c.getColumnIndex(COL_STORE_ADDRESS)), 
       c.getString(c.getColumnIndex(COL_STORE_TELEPHONE)), 
       c.getString(c.getColumnIndex(COL_STORE_GEO_LAT)), 
       c.getString(c.getColumnIndex(COL_STORE_GEO_LONG)), 
       c.getString(c.getColumnIndex(COL_STORE_LEADTIME)), 
       c.getString(c.getColumnIndex(COL_STORE_MD))); 
    db.close(); 
    c.close(); 
    return data; 
} 

は、これが私のログです:あなたのクエリが0の結果を返したように

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.apps.userinarts.mobilemerchpre/com.apps.userinarts.MobileMerchPre.StoresCheckinActivity}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
at android.app.ActivityThread.-wrap11(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
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) 
Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 
at android.database.AbstractCursor.checkPosition(AbstractCursor.java:460) 
at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136) 
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50) 
at com.apps.userinarts.MobileMerchPre.db.StoreHelper.getStore(StoreHelper.java:130) 
at com.apps.userinarts.MobileMerchPre.StoresCheckinActivity.inCaseOffline(StoresCheckinActivity.java:90) 
at com.apps.userinarts.MobileMerchPre.StoresCheckinActivity.onCreate(StoresCheckinActivity.java:83) 
at android.app.Activity.performCreate(Activity.java:6237) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
at android.app.ActivityThread.-wrap11(ActivityThread.java)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
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)  
+1

はあなたのクエリが0のアイテムを返すように、あなたはこれを確認することができルックス:カーソルのサイズが0
はこのような何かを行うある場合はfalseを返しますか? – Egor

答えて

1

が見えます。これを確認するには、moveToFirst()の結果を無視しないでください。

if(c.moveToFirst()) { 
    data = new StoreData(
      c.getString(c.getColumnIndex(COL_STORE_ID)), 
      c.getString(c.getColumnIndex(COL_ACCOUNT_ID)), 
      c.getString(c.getColumnIndex(COL_KOTA_ID)), 
      c.getString(c.getColumnIndex(COL_STORE_NAME)), 
      c.getString(c.getColumnIndex(COL_STORE_MANAGER)), 
      c.getString(c.getColumnIndex(COL_STORE_ADDRESS)), 
      c.getString(c.getColumnIndex(COL_STORE_TELEPHONE)), 
      c.getString(c.getColumnIndex(COL_STORE_GEO_LAT)), 
      c.getString(c.getColumnIndex(COL_STORE_GEO_LONG)), 
      c.getString(c.getColumnIndex(COL_STORE_LEADTIME)), 
      c.getString(c.getColumnIndex(COL_STORE_MD))); 
    db.close(); 
    c.close(); 
} 
return data; 
+0

これを実行してStoreデータ= nullを設定すると、問題をnullpointer、 –

+0

@ LWiraSatriaMにするには、どのような場合でもこの問題を処理する必要があります。データベースに存在しないレコードを要求した場合に表示されます。 –

関連する問題