首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么变量总是返回0?

为什么变量总是返回0?
EN

Stack Overflow用户
提问于 2014-03-17 00:27:04
回答 1查看 91关注 0票数 0

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

代码语言:javascript
复制
 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;所以它返回那个值。我无法访问尝试之外的号码。

EN

回答 1

Stack Overflow用户

发布于 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()

代码语言:javascript
复制
 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;
}

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

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22439503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档