Java 无效的整数“&引用;在SQLiteDatabase上
我正在制作一个小应用程序,因此我需要使用一个小的SQLite数据库 请帮助我,我不知道如何修复此错误: 在数据库中的“SQLiteDatabase db=this.getReadableDatabase();”行 ,(Main:int-teams=db.countAllTeams()) 错误:W/System.err﹕ 无效int:“ 数据库:Java 无效的整数“&引用;在SQLiteDatabase上,java,android,database,sqlite,Java,Android,Database,Sqlite,我正在制作一个小应用程序,因此我需要使用一个小的SQLite数据库 请帮助我,我不知道如何修复此错误: 在数据库中的“SQLiteDatabase db=this.getReadableDatabase();”行 ,(Main:int-teams=db.countAllTeams()) 错误:W/System.err﹕ 无效int:“ 数据库: public class DatabaseHelper extends SQLiteOpenHelper { private static fin
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());
}
.setText不直接接受整数,请尝试:
tvText.setText(String.valueOf(teams));
我会使用rawQuery()
而不是simpleQueryForString()
:
public int countAllTeams(){
SQLiteDatabase db=this.getReadableDatabase();
列表团队=新建ArrayList();
游标c=db.rawQuery(“从“+TABLE_TEAM,new String[]{}”中选择COUNT(*);
c、 moveToFirst();
返回c.getInt(0);
}
整数。getInteger不会将字符串转换为整数。
从查询中获取单个数字的最简单方法是使用:
但要获得表中的行数,还有一个更简单的函数:
long count = DatabaseUtils.queryNumEntries(db, TABLE_TEAM);
此外,当您给TextView.setText
一个整数时,它需要一个资源ID。
您必须手动将计数转换为字符串:
tvText.setText(Integer.toString(teams));
Integer.getInteger(..)
?是否确实要使用此方法而不是Integer.valueOf(..)
或Integer.parseInt(..)
.getInteger()
读取系统属性(根据java文档)。
long count = DatabaseUtils.longForQuery(db,
"SELECT COUNT(*) FROM " + TABLE_TEAM, null);
long count = DatabaseUtils.queryNumEntries(db, TABLE_TEAM);
tvText.setText(Integer.toString(teams));