gpt4 book ai didi

java - 从android中的SQLite获取单个值

转载 作者:IT王子 更新时间:2023-10-29 06:25:01 27 4
gpt4 key购买 nike

我现在正在为 android 开发我的第一个应用程序,我正在使用多个表来获取和插入数据。在开发过程中,我发现自己从只有两列的表中获取数据 STATS(_id, stat_name)。我的问题是什么?我有一个包含 10 个按钮的 Activity ,每个按钮都与一个 stat_name 相关联。当用户按下其中一个按钮时,应用程序将“转到”STATS 表以获取正确的 _id,然后将此 _id 输入到另一个表 GAME_STATS(_id, PlayerId (fk), GameId(fk), StatsId(fk)(andmore)) on 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);

关于java - 从android中的SQLite获取单个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11480171/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com