gpt4 book ai didi

java - SQLiteDatabase 的 int ""无效

转载 作者:行者123 更新时间:2023-12-01 12:24:52 25 4
gpt4 key购买 nike

我正在制作一个小型应用程序,因此我需要使用一个小型 SQLite 数据库。

请帮助我,我不知道如何修复此错误:

在“SQLiteDatabase db = this.getReadableDatabase();”行在数据库中,(主要:int team = db.countAllTeams())

错误:W/System.err:无效的整数:“”

数据库:

public class DatabaseHelper extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "database";
private static final String TABLE_TEAM = "team";

private static final String KEY_TEAM_FULLNAME = "full_name";
private static final String KEY_TEAM_SHORTNAME = "short_name";
private static final String KEY_TEAM_STADIUM = "stadium";
private static final String KEY_TEAM_LOGO = "logo";

private static final String CREATE_TABLE_TEAM = "CREATE TABLE "
+ TABLE_TEAM + "(" + KEY_TEAM_FULLNAME + " TEXT PRIMARY KEY," +
KEY_TEAM_SHORTNAME + " TEXT," +
KEY_TEAM_STADIUM + " TEXT," +
KEY_TEAM_LOGO + " INTEGER" + ")";


public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_TEAM);
}

@Override
public void onUpgrade(SQLiteDatabase db, int old, int neW) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_TEAM);
onCreate(db);
}

public void closeDB() {
SQLiteDatabase db = this.getReadableDatabase();
if (db != null && db.isOpen()) db.close();
}

public long createTeam(Team team) {
SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();
values.put(KEY_TEAM_FULLNAME, team.getFullName());
values.put(KEY_TEAM_SHORTNAME, team.getShortName());
values.put(KEY_TEAM_LOGO, team.getLogo());
values.put(KEY_TEAM_STADIUM, team.getStadium());

return db.insert(TABLE_TEAM, null, values);
}

public int countAllTeams(){
SQLiteDatabase db = this.getReadableDatabase();
List<Team> teams = new ArrayList<Team>();

return Integer.getInteger(db.compileStatement("SELECT COUNT(*) FROM " + TABLE_TEAM).simpleQueryForString());
}

}

主要

DatabaseHelper db;
TextView tvText;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_home);

tvText = (TextView)findViewById(R.id.tvText);
String text = "";

db = new DatabaseHelper(getApplicationContext());
int teams = db.countAllTeams();

tvText.setText(teams);
}
}

最佳答案

Integer.getInteger 不会将字符串转换为整数。从查询中获取单个数字的最简单方法是使用 DatabaseUtils :

long count = DatabaseUtils.longForQuery(db,
"SELECT COUNT(*) FROM " + TABLE_TEAM, null);

但是要获取表中的行数,还有一个更简单的函数:

long count = DatabaseUtils.queryNumEntries(db, TABLE_TEAM);

此外,当您向 TextView.setText 提供一个整数时,它需要一个资源 ID。您必须手动将计数转换为字符串:

tvText.setText(Integer.toString(teams));

关于java - SQLiteDatabase 的 int ""无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26444591/

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