为什么变量总是返回0?

时间:2014-03-16 16:27:04

标签: android sqlite variables

我正在尝试从Sqlite数据库中检索计数。但即使我在数据库中添加了值,变量数也总是返回零。任何人都可以一步一步告诉我,我做错了什么。这是我的代码。

 public int isUserAvailable(Double latitude,Double longitude)
{
int number = 0;
Cursor c = null;

try
{
    c = db.rawQuery("select latitude,longitude from savedlocation where latitude = ? and longitude = ? ", new String[] {String.valueOf(latitude),String.valueOf(longitude)});

    if(c.getCount() != 0)
        number = c.getCount();

}
catch(Exception e) {
    e.printStackTrace();
} finally {
    if(c!=null) c.close();
}
return number;
}

我认为是因为我初始化了数字= 0;所以它返回那个价值。我无法在外面尝试访问号码。

1 个答案:

答案 0 :(得分:0)

{String.valueOf(latitude),String.valueOf(longitude)}可能是问题

每次都不会发生,但有时String.valueOf会返回意外值

类似于u - s - e - r - a - r - r - y

尝试latitude+""longitude+""将其转换为字符串。

cursor.moveToFirst不应该影响cursor.getCount()

 public int isUserAvailable(Double latitude,Double longitude)
{
int number = 0;
Cursor c = null;

try
{
    c = db.rawQuery("select latitude,longitude from savedlocation where latitude = ? and longitude = ? ", new String[] {latitude+"",longitude+""});

    if(c.getCount() != 0)
        number = c.getCount();

}
catch(Exception e) {
    e.printStackTrace();
} finally {
    if(c!=null) c.close();
}
return number;
}

另外,如果您想获得与查询匹配的行数,请尝试以下方法:

public int isUserAvailable(Double latitude,Double longitude)
{
int number = 0;
Cursor c = null;

try
{
    c = db.rawQuery("select count(*) from savedlocation where latitude = ? and longitude = ? ", new String[] {latitude+"",longitude+""});

    if(c.moveToFirst())
        number = c.getInt(0);

}
catch(Exception e) {
    e.printStackTrace();
} finally {
    if(c!=null) c.close();
}
return number;
}