ActiveAndroid中的多参数

3
我在我的项目中使用ActiveAndroid作为ORM系统,我使用以下代码行来查询数据库。
 List<Chats> s = new Select()
                .from(Chats.class)
                .where(col_conversation + " = ?  and " + col_sender + " = ? and " + col_body + " = ?",conversation.getId(),sender.getId(),body)    .execute();

但是它没有返回任何结果。我确定数据库中有这样的一行。


请发布您的 col_conversation、col_sender 和 col_body 值以及数据库模型类。 - romtsn
谢谢...但我已经检查过它们了,它们是正确的。当我制作没有参数的where语句时,它可以正常工作,但是当我向其发送多个参数时,结果为空。 - Navid_pdp11
单个参数怎么样?它还能正常工作吗?我有一个观点,也许你应该尝试将AND操作符大写。 - romtsn
我用单参数查询进行测试,结果很好。但是在无参数查询中使用 and 而不是 AND,它也能正常工作??? - Navid_pdp11
2个回答

6
另一种方法是使用多个where子句来执行多参数查询:
List<Chats> s = new Select()
            .from(Chats.class)
            .where(col_conversation + " = ?",conversation.getId())
            .where(col_sender + " = ?", sender.getId())
            .where(body + " = ?", body)
            .execute();

谢谢,这很有用,但如果我需要创建“和”/“或”语句,我该怎么办? - Navid_pdp11
这个不行啊,第二个where子句会返回该列中的所有记录。 - Noman Rafique
我需要检查我的确切的SQL查询(带有已解析为它们各自的值的“?”),我该怎么做? Select select = new Select(); 然后 select.toSql() 显示包含“?”的查询。 - Bugs Happen

2

您需要不传递任何参数,并将选择查询更改为以下内容:

List<Chats> s = new Select()
                .from(Chats.class)
                .where(col_conversation + " = " + conversation.getId() + " and " + col_sender + " = " + sender.getId() + " and " + col_body + " = '" + body + "'")

                .execute();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接