计算sqlite中的总行数

时间:2012-03-12 20:43:55

标签: android sqlite

我在数据库管理器中编写了一个方法,假设它返回名为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”;等..

2 个答案:

答案 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);