簡體   English   中英

在Android中從SQLite獲取單個值

[英]Fetching single value from SQLite in android

我現在正在為Android開發我的firs應用程序,正在使用多個表來獲取和插入數據。 在開發過程中,發現自己從只有兩列STATS(_id, stat_name)的表中獲取數據。 我的問題是什么? 我有一個帶有10個按鈕的活動,每個按鈕都與一個stat_name相關。 當用戶按下其中一個按鈕時,應用程序將“進入” STATS表以獲取正確的_id ,然后將該_id輸入到另一個表中GAME_STATS(_id, PlayerId (fk), GameId(fk), StatsId(fk)(andmore))STATS._id = GAME_STATS.StatsId ,我基本上必須對PlayerId做類似的操作。

現在,我正在這樣做:

public String getStatId(String statName){
    String statId = "Error";
    Cursor c = mDb.query(STAT_TABLE, new String[] {AbstractDbAdapter.STAT_ID, AbstractDbAdapter.STAT_NAME}, AbstractDbAdapter.STAT_NAME+ " = " +statName, null, null, null, null);
    int count = c.getCount();
    if(count == 1){
        c.moveToFirst();
        statId = c.getString(c.getColumnIndex(AbstractDbAdapter.STAT_ID));
    }
    c.close();
    mDb.close();
    Log.d("FootballApp","StatId =" +statId);
    return statId;      
}

我的問題是,我知道應該只返回一個值,而我仍然必須使用Cursor這樣做。 而且,我認為,編寫所有代碼只是從一個表中獲得一個ID看起來很復雜且耗時。 我的應用程序中有9個表,例如,當我只有名字時,每次需要來自不同表的_id時,我都必須編寫類似的方法。

有人可以告訴我是否有更簡便的方法來完成所有這些工作? 請:)謝謝! :)

我認為沒有比這更簡單的了。 但是,您可以使該方法更通用,因此可以重用代碼:

public String getFromDb(String tableName, String select, String selectBy, String selectName){
    String selection = "Error";
    Cursor c = mDb.query(tableName, new String[] {select}, selectBy + "=" + selectName, null, null, null, null);
    if(c.getCount() == 1){
        c.moveToFirst();
        selection = c.getString(c.getColumnIndex(select));
    }
    c.close();
    mDb.close();
    Log.d("FootballApp", select + "=" + selection);
    return id;      
}

用法示例:

int statID = getFromDb(STAT_TABLE, AbstractDbAdapter.STAT_ID, AbstractDbAdapter.STAT_NAME, statName);

Cursor.moveToFirst()簡單,但是Cursor.moveToFirst()如果光標為空,則返回false,因此您可以刪除c.getCount()調用,而只需說出if(c.moveToFirst()) 這將節省您一點輸入時間:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM