我在数据库管理器中编写了一个方法,假设它返回名为homeIcons的表中的总行数;但是我注意到它有0时返回0,1有1,然后有3时有3?所以我的方法有问题..请看下面:
public int getHomeScreenTotal (){
SQLiteDatabase db=this.getReadableDatabase();
Cursor c = db.rawQuery("select count(*) as count from "+ homeIcons,null);
c.moveToFirst();
int total = c.getInt(0);
return total;
}
修改的 所以我编辑了我的代码..我已经在几乎所有可能的方式重写了这个方法..问题不在于它没有返回正确数量的行,因为它是......它只是它返回了二进制数...而不是3,它返回11而不是5它返回101 .. UHG !!!!我只想要一个int!我不知道这是否是adroid / java方法中访问SQLite数据库的错误,或者我错过了什么..我甚至尝试过将它打到一个int,但无济于事.. :(
修改的 好吧,我只是尝试使用以下方法强制二进制文件:
public int getHomeScreenTotal (){
SQLiteDatabase db=this.getReadableDatabase();
int rows;
String bin = ""+ db.compileStatement("SELECT COUNT(*) FROM " + homeIcons).simpleQueryForLong();
rows = Integer.parseInt(bin, 2);
return rows;
}
这会引发错误
java.lang.NumberFormatException:无效的int:“7”
其中“7”实际上是它要返回的数字..如果我有5行我得到错误的无效int“5”;等..
答案 0 :(得分:3)
让数据库为您解决问题会让您高兴得多。
String query = "select count(*) from " + homeIcons;
答案 1 :(得分:0)
您可以通过执行以下查询从SQLite获取行数:
SELECT count(*) as count FROM homeIcons;
它将返回一个包含一行的表,该行仅包含homeIcons
表中的行数:
+---------+
| count |
+---------+
| ### |
+---------+
要在您的应用程序中使用此代码,请执行:
Cursor c = db.rawQuery("SELECT count(*) AS count FROM "+ homeIcons,null);
c.moveToFirst();
int total = c.getInt(0);
修改强>
要从返回的二进制文件中获取十进制数,请使用:
String bin = "" + c.getInt(0);
int total = Integer.parseInt(bin, 2);