从SQL数据库获取空数据 - Android

时间:2015-03-04 01:43:57

标签: android sql

我有一个SQL数据库,可以将服务器中的信息存储到其中。这是我存储数据的代码,

public void addCard(String did, String cid, String first, String second) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_CARD_DID, did); // deck id
    values.put(KEY_CARD_CID, cid); // card id
    values.put(KEY_CARD_FIRST, first); 
    values.put(KEY_CARD_SECOND, second);

    // Inserting Row
    db.insert(TABLE_CARD, null, values);
    db.close(); // Closing database connection
}

在使用此代码

的活动中调用此方法
DatabaseHandler db = new DatabaseHandler(getApplicationContext());

db.addCard(json.getString(KEY_DID),
           json.getString(KEY_CID),
           KEY_FIRST,
           KEY_SECOND);

当我这样做时,我没有收到任何错误。当我尝试访问数据时出现问题。这是我访问数据的功能,

public HashMap<String, String> getCard(String cid){
    HashMap<String,String> card = new HashMap<String,String>();
    String selectQuery = "SELECT * FROM " + TABLE_CARD + " WHERE cid='" + cid + "'";

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    cursor.moveToFirst();
    if(cursor.getCount() > 0) {
        card.put("did", cursor.getString(1));
        card.put("cid", cursor.getString(2));
        card.put("first", cursor.getString(3));
        card.put("second", cursor.getString(4));
    }
    cursor.close();
    db.close();
    // return card
    return card;
}

我使用此代码调用此函数

DatabaseHandler db = new DatabaseHandler(getApplicationContext());
HashMap card;
card = db.getCard(KEY_CID);
dlgAlert.setMessage(card.get("did") + " " + card.get("cid"));

当此代码运行并弹出警告消息时,我会收到null null的响应。

我不知道我的错误是存储数据还是从数据库中获取数据。

创建表格

用于创建表格的代码

String CREATE_DECK_TABLE = "CREATE TABLE " + TABLE_CARD + "("
    + KEY_CARD_ID      + " INTEGER PRIMARY KEY AUTOINCREMENT,"
    + KEY_CARD_DID     + " TEXT,"
    + KEY_CARD_CID     + " TEXT,"
    + KEY_CARD_FIRST   + " TEXT,"
    + KEY_CARD_SECOND  + " TEXT"  + ")";
db.execSQL(CREATE_DECK_TABLE);

0 个答案:

没有答案