我正在尝试从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;所以它返回那个价值。我无法在外面尝试访问号码。
答案 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;
}