Android 为什么where.eq(columnname,value)会给出错误的结果?

Android 为什么where.eq(columnname,value)会给出错误的结果?,android,android-sqlite,ormlite,Android,Android Sqlite,Ormlite,所以我使用ormlite在android中处理我的sqlite数据库。不幸的是,我使用dao.queryBuilder().where().eq().queryFirst()得到了意外的结果。 以下是我的功能: public static Person getByEmail(Dao<Person, ?> dao, String email) { try { Log.e("queriedEmail", email); return dao.que

所以我使用ormlite在android中处理我的sqlite数据库。不幸的是,我使用dao.queryBuilder().where().eq().queryFirst()得到了意外的结果。 以下是我的功能:

public static Person getByEmail(Dao<Person, ?> dao, String email) {
    try {
        Log.e("queriedEmail", email);
        return dao.queryBuilder().where()
                .eq(Person.EMAIL_FIELD, email)
                .queryForFirst();
    } catch (SQLException e) {
        throw new RuntimeException(e);
    }
}

如果有人能指出我错在哪里,那就太棒了。谢谢

我找到了一个解决办法。queryBuilder实际上给出了错误的结果,所以我使用了ormlite而不是queryBuilder。

我得到了一个解决方案。queryBuilder实际上给出了错误的结果,所以我使用了ormlite而不是queryBuilder

所以我使用ormlite在android中处理我的sqlite数据库。不幸的是,我使用dao.queryBuilder().where().eq().queryFirst()得到了意外的结果

您似乎暗示
QueryBuilder
由于某种错误而无法工作。这不是不可能的,但更有可能是您在中使用不正确。我会使用调试器来找出发生了什么。要查看生成的查询类型,还可以启用

需要调查的一些事情:

  • 确保您的
    Person.EMAIL\u字段符合您的期望
  • 看起来您正在打印
    电子邮件
    ,因此该字段应该正常,但
    空值也可能是问题所在
  • 等等
祝您调试该bug时好运

所以我使用ormlite在android中处理我的sqlite数据库。不幸的是,我使用dao.queryBuilder().where().eq().queryFirst()得到了意外的结果

您似乎暗示
QueryBuilder
由于某种错误而无法工作。这不是不可能的,但更有可能是您在中使用不正确。我会使用调试器来找出发生了什么。要查看生成的查询类型,还可以启用

需要调查的一些事情:

  • 确保您的
    Person.EMAIL\u字段符合您的期望
  • 看起来您正在打印
    电子邮件
    ,因此该字段应该正常,但
    空值也可能是问题所在
  • 等等

祝您调试错误时好运。

谢谢您的回答,我想知道有没有办法查看传递给查询的实际参数?我阅读了参考文件,但找不到我的答案。谢谢如果你打开跟踪日志,你也应该看到args。谢谢你的回答,先生,我想知道有没有办法看到传递给查询的实际参数?我阅读了参考文件,但找不到我的答案。谢谢如果启用跟踪日志记录,则还应该看到args。
public static Person getByEmail(MyApp app, String email) {
    try {
        return getByEmail(app.getDatabaseHelper().getDao(
                Person.class), email);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;
}