[英]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.