【问题标题】:Getting all records from sqlite android从sqlite android获取所有记录
【发布时间】:2013-01-10 20:19:52
【问题描述】:

我正在创建一个数据库,我需要从数据库中读取所有记录,但是我的程序在这个语句处不断崩溃:

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

} 

有什么想法吗?

【问题讨论】:

  • 定义崩溃?发布堆栈跟踪
  • 不,只有我是个智障:/我在创建字符串中拼错了列名

标签: java android sqlite


【解决方案1】:

这是我从表格中获取所有内容的方法..

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

【讨论】:

    【解决方案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());
        }
    }
    

    【讨论】:

      【解决方案3】:
      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();
      

      【讨论】:

        【解决方案4】:
        Cursor c = ourDatabase.rawQuery("SELECT * FROM table_name", null);
                if(c!=null){
                    c.moveToFirst();
                }
                return c;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-10
          • 2015-05-12
          • 1970-01-01
          相关资源
          最近更新 更多