2013-01-10 91 views
9

我創建一個數據庫,我需要從數據庫中讀取的所有記錄,但我的程序保持在這個聲明崩潰:獲取所有記錄的SQLite的Android

newWord= db.getAllRecords(); 

我想有一個與getAllRecords問題( ),因爲Eclipse表明沒有錯誤。

public Cursor getAllRecords() { 
db = dBHelper.getWritableDatabase();//obtains the writable database 
return db.query(DATABASE_TABLE, new String[] { KEY_ROWID,KEY_WORD}, null, null, null,  null, null);//the query used to obtain all records form the table 

} 

任何想法?

+5

define crash?發佈堆棧跟蹤 – Woot4Moo

+1

不只是我是一個阻礙:/我拼錯創建字符串中的列名稱 –

回答

13

這是我做的,以從表中獲取所有內容..

public ArrayList<MyObject> getAllElements() { 

    ArrayList<MyObject> list = new ArrayList<MyObject>(); 

    // Select All Query 
    String selectQuery = "SELECT * FROM " + MY_TABLE; 

    SQLiteDatabase db = this.getReadableDatabase(); 
    try { 

     Cursor cursor = db.rawQuery(selectQuery, null); 
     try { 

      // looping through all rows and adding to list 
      if (cursor.moveToFirst()) { 
       do { 
        MyObject obj = new MyObject(); 
        //only one column 
        obj.setId(cursor.getString(0)); 

        //you could add additional columns here.. 

        list.add(obj); 
       } while (cursor.moveToNext()); 
      } 

     } finally { 
      try { cursor.close(); } catch (Exception ignore) {} 
     } 

    } finally { 
     try { db.close(); } catch (Exception ignore) {} 
    } 

    return list; 
} 
-1
Cursor c = ourDatabase.rawQuery("SELECT * FROM table_name", null); 
     if(c!=null){ 
      c.moveToFirst(); 
     } 
     return c; 
2
public void printTableData(String table_name){ 
    SQLiteDatabase db = getReadableDatabase(); 

    Cursor cur = db.rawQuery("SELECT * FROM " + table_name, null); 

    if(cur.getCount() != 0){ 
     cur.moveToFirst(); 

     do{ 
      String row_values = ""; 

      for(int i = 0 ; i < cur.getColumnCount(); i++){ 
       row_values = row_values + " || " + cur.getString(i); 
      } 

      Log.d("LOG_TAG_HERE", row_values); 

     }while (cur.moveToNext()); 
    } 
} 
0
Initialize TABLE: 
    private static String TABLE="your_table_name"; 

爲獲得的所有記錄清單,寫出下面的方法到你的數據庫類:

public ArrayList<RecentStickerModel> getAllRecentRecords() { 

    ArrayList<RecentStickerModel> listStickers = new ArrayList<>(); 

    SQLiteDatabase db = getWritableDatabase(); 

    String q = "SELECT name from sqlite_master WHERE type='table' AND name='" + TABLE + "'"; 
    Cursor cursorTable = db.rawQuery(q, null); 

    if (cursorTable != null && cursorTable.moveToFirst()) { 

     String tableName = cursorTable.getString(0); 
     cursorTable.close(); 

     if (TABLE.equals(tableName)) { 

      String query = "Select * from " + TABLE ; 

      Cursor cursor = db.rawQuery(query, null); 

      if (cursor != null && cursor.moveToFirst()) { 

       Logger.e(TAG, "cursor size:" + cursor.getCount()); 

       int catNameCI = cursor.getColumnIndex(KEY_CAT_NAME); 
       int imagePathCI = cursor.getColumnIndex(KEY_IMAGE_PATH); 
       int lastStickerTimeCI = cursor.getColumnIndex(KEY_LAST_STICKER_TIME); 


       do { 

        RecentStickerModel model = new RecentStickerModel(); 
        model.setCatName(cursor.getString(catNameCI)); 
        model.setImgStickerPath(cursor.getString(imagePathCI)); 
        model.setLastStickerTime(cursor.getString(lastStickerTimeCI)); 


        listStickers.add(model); 
       } while (cursor.moveToNext()); 

       cursor.close(); 
      } 
     } 

     db.close(); 
    } 

    return listStickers; 
} 

然後在需要的地方撥打以下方法:

arrayListRecent=stickersListDatabase.getAllRecentRecords();