存储和获取SqliteDataBase

时间:2017-01-10 06:08:58

标签: android android-recyclerview

我正在创建一个应用,我希望在RecyclerView中显示所有用户列表。用户列出来自服务器的数据。我已成功添加 RecyclerView中的数据并且工作正常但现在我想将所有数据存储在SqliteDatabase中且没有网络连接我想从sqlite获取数据并在RecyclerView中显示意味着我想要在离线模式下显示所有列表(与来自服务器相同)。 我创建了数据库,但我不知道错误在哪里,我没有得到所有数据。怎么做?

这是我的SqliteDataBase:

public long insertContact(int userId, String name, String profile, String status) {
    long result = 0;
    open();
    ContentValues contentValues = new ContentValues();
    contentValues.put("USERID", userId);
    contentValues.put("NAME", name);
    contentValues.put("PROFILE", profile);
    contentValues.put("STATUS", status);
    result = sqLiteDataBase.insert(DATABASE_TABLE_CONTACT, null, contentValues);
    return result;
}

public Cursor getallEntry() {
    return sqLiteDataBase.query(DATABASE_TABLE_CONTACT, null, null, null, "ID", null, "ID");
}

这里我在类中调用insertContact,ContactList包含来自服务器的数据:

for (int i = 0; i < contactList.size(); i++) {
    sqliteDataBase.insertContact(contactList.get(i).getId(),
            contactList.get(i).getName(),"",status);

这里我在没有网络连接的情况下获取所有数据:

if (cd.isConnectingToInternet()) {
        getAllUserList();
    }
    else {
        Cursor cursor = sqliteDataBase.getallEntry();
}

2 个答案:

答案 0 :(得分:0)

在数据库类中添加此方法

 public void insertContact(ContentValues values) {
    try {
        SQLiteDatabase db = _dbWriteable;
        db.insert(Your.TABLENAME, null, values);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

在您的活动中,您获得服务器响应,请在此处插入值。

ContentValues contentValues = new ContentValues();
    Database db = new Database(mContext);
    for (int i = 0; i < contactList.size(); i++) {
        contentValues.put("USERID", userId);
        contentValues.put("NAME", name);
        contentValues.put("PROFILE", profile);
        contentValues.put("STATUS", status);
        db.insertContact(values);
    }

答案 1 :(得分:0)

您可以使用以下代码获取所有记录

String selectQuery = "SELECT  * FROM " + TABLE_NAME;

SQLiteDatabase db = DatabaseManager.getInstance().openDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);