代码之家  ›  专栏  ›  技术社区  ›  Priyank

在android中记录sql语句;由应用程序触发

  •  0
  • Priyank  · 技术社区  · 15 年前

    我有一个小型的android应用程序,目前我正在android中启动一个sql语句,以获取特定where子句在数据库中的行数。

    下面是我的示例代码:

    public boolean exists(Balloon balloon) {
        if(balloon != null) {
            Cursor c = null;
            String count_query = "Select count(*) from balloons where _id = ?";
            try {
                c = getReadableDatabase().rawQuery(count_query, new String[] {balloon.getId()});
                if (c.getCount() > 0)
                    return true;
    
            } catch(SQLException e) {
                Log.e("Running Count Query", e.getMessage());
            } finally {
                if(c!=null) {
                    try {
                        c.close();
                    } catch (SQLException e) {}
                }
            }
        }
        return false;
    }
    

    即使数据库表实际上是空的,这个方法也会返回一个计数1。我搞不懂,为什么会这样。在数据库中运行相同的查询将使我获得0的计数。

    我想知道是否可以在日志中记录或查看在参数替换之后最终在数据库上触发的所有sql查询;这样我就可以了解出了什么问题。

    干杯

    1 回复  |  直到 15 年前
        1
  •  3
  •   Brad Hein    15 年前

    该查询将始终返回一条记录(任何 SELECT COUNT )。原因是,它返回的记录包含一个字段,该字段指示具有该ID的“气球”表中存在多少条记录。

    换句话说,一个记录( c.getcount()==1 )不是说在气球中找到的记录数是1,而是由sqlite生成的记录,它包含一个带有结果的字段。

    要知道气球的数目,你应该 c.movetofirst() 然后 numberOfBalloons = c.getInt(0)