我正在尝试从Sqlite数据库中检索计数。但是,即使我在数据库中添加值,变量number也总是返回零。有人能一步一步地告诉我我做错了什么吗?这是我的代码。
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;
}我想这是因为我初始化了number=0;所以它返回那个值。我无法访问尝试之外的号码。
发布于 2014-03-17 00:36:04
{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;
}https://stackoverflow.com/questions/22439503
复制相似问题