2017-05-18 95 views
1

單擊按鈕時,我想從SQLite獲取數據ID。不幸的是我的應用程序崩潰。當我嘗試從SQLite中檢索數據ID時會發生這種情況。嘗試從SQLite獲取ID時,應用程序崩潰

logcat的

05-17 01:00:54.873 16093-16093/? E/AndroidRuntime﹕ FATAL EXCEPTION: main 
android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1 
at android.database.AbstractCursor.checkPosition(AbstractCursor.java:424) 
at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136) 
at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:68) 
at com.example.tony.easyactivity.MainActivity$1.onClick(MainActivity.java:49) 

49號線

int id = data.getInt(data.getColumnIndex("ID")); 

任何幫助將非常感激。

我曾嘗試:

btnAddData.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        boolean isInserted = myDb.insertData(editName.getText().toString()); 
        if (isInserted) { 
         Cursor data = myDb.getID(editName.getText().toString()); 
         int id = data.getInt(data.getColumnIndex("ID")); 
         Toast.makeText(getApplicationContext(), id + "", Toast.LENGTH_LONG).show(); 
        } 
        else 
        { 
         myDb.addData(editName.getText().toString()); 
         Toast.makeText(getApplicationContext(), "Not yet inserted ", Toast.LENGTH_LONG).show(); 
        } 
       } 
      }); 
     } 

DatabaseHelper

public Cursor getID(String info) { 
      SQLiteDatabase db = this.getWritableDatabase(); 
      Cursor c = db.rawQuery("Select ID from " + TABLE_NAME1 + " WHERE " + COL3 + "=?", new String[]{info}); 
      return c; 
     } 

     public boolean insertData(String name) { 
      SQLiteDatabase db = this.getReadableDatabase(); 
      Cursor c = db.rawQuery("Select * from " + TABLE_NAME1 + " WHERE " + COL3 + "=?", new String[]{name}); 
      if (c.getCount() > 0) { 
       return true; 
      } else 
       return false; 
     } 

     public void addData(String name) { 
      SQLiteDatabase db = this.getWritableDatabase(); 
      ContentValues cv=new ContentValues(); 
      cv.put(COL3, name); 
      db.insert(TABLE_NAME1, null, cv); 
     } 

回答

2

您需要將光標移動到第一個項目之前,你可以通過使用moveToFirst()方法來訪問其數據。所以在你的onClickListener()

Cursor data = myDb.getID(editName.getText().toString()); 
data.moveToFirst(); 
int id = data.getInt(data.getColumnIndex("ID")); 
+0

非常感謝! –

相關問題