【问题标题】:Check if int from database string is equal to certain value检查数据库字符串中的 int 是否等于某个值
【发布时间】:2015-08-13 10:16:12
【问题描述】:

我想检查数据库变量的值是否为 5,然后更改图像。 我在检查 if 语句之前所做的 Log.d 为我提供了值 5 和我想要检查的标题,因此数据在数据库中。但是我的 if 语句没有执行,“完成”没有记录,图像也没有改变。也许我使用错误的方式将 cursor.getString(0) 解析为 Integer? 没有记录错误。

DbHelper dbh  = new DbHelper(context);
    Cursor cursor = dbh.getScore(dbh);
    cursor.moveToFirst();
    if (cursor.moveToFirst()) {
        do {
            Log.d("Database", cursor.getString(0) + cursor.getString(1));
            if (Integer.parseInt(cursor.getString(0))== 5 && Headline.toString().equals(cursor.getString(1))){
                Log.d("Database","Done");
                ImageDone.setImageResource(R.drawable.markerdone);
            }
        }
        while(cursor.moveToNext());
    }
    cursor.close();

【问题讨论】:

  • 什么是标题类型?你确定你比较对了吗?
  • 你确定 Headline.toString().equals(cursor.getString(1) 是真的吗?
  • Headline 是一个 TextView,它是真的(在日志中可以看到“cursor.getString(1)”);”有一行 Headline 为 true 且 cursor.getString(0) 为 5...)
  • 为确保 Headline 不是问题,请尝试删除等于条件并查看它是否有效。
  • 谢谢!!我不知道为什么我不早点尝试这个。我也在 onCreate 中设置了 Headline ,当我检查它是否相等时,它似乎还没有设置。问题解决了!

标签: java android sqlite integer


【解决方案1】:

我在尝试从 Mysql DB 解析 int 时遇到了同样的问题,所以我这样修复它:

 if (Math.round(Float.parseFloat(cursor.getString(0))== 5 && Headline.toString().equals(cursor.getString(1))){
            Log.d("Database","Done");
            ImageDone.setImageResource(R.drawable.markerdone);
        }

【讨论】:

    猜你喜欢
    • 2018-04-01
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 2018-09-25
    相关资源
    最近更新 更多