2017-01-01 11 views
1

私はormliteを使用して、Androidのsqliteデータベースを処理しています。残念ながら、dao.queryBuilder()。where()。eq()。queryFirst()を使用して予期しない結果が発生しています。ここ は私の関数である。Ormlite:なぜwhere.eq(columnname、value)が間違った結果を出すのですか?

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); 
    } 
} 

私は実際に私が手に渡されている電子メールや人物オブジェクトをチェックしています。どちらも完全に異なる電子メールを持っています。

上記の機能は、私が間違っているつもりですどこの誰かが指摘することができればそれは素晴らしいことだ

public static Person getByEmail(MyApp app, String email) { 
    try { 
     return getByEmail(app.getDatabaseHelper().getDao(
       Person.class), email); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

によって呼び出されます。ありがとう!

答えて

0

私は解決策を得ました。私はqueryBuilderの代わりにqueryRawを使用しました。

0

私はormliteを使用して、Androidのsqliteデータベースを処理しています。残念ながら、dao.queryBuilder()。where()。eq()。queryFirst()を使用して予期しない結果が発生しています。

QueryBuilderは何らかのバグのために動作していないことを意味しているようです。それは不可能ではありませんが、間違って使用している可能性は非常に高いです。私は何が起こっているのか把握するためにデバッガを使用します。生成されるクエリの種類を確認するには、ORMLite's Android logsをオンにすることもできます。

に見ていくつかの点:

  • は、あなたのPerson.EMAIL_FIELDは、あなたが期待するものであることを確認してください。
  • emailのように表示されますので、フィールドは正常になるはずですが、nullという値も問題になる可能性があります。運のベスト

バグをデバッグします。

+0

あなたの答えはありがとうございました。実際の引数をクエリに渡す方法はあるのでしょうか?私は参照されたドキュメントを読んだが、私の答えを見つけることができませんでした。ありがとう! –

+0

トレースログを有効にすると、argsも表示されます。 – Gray

関連する問題