【问题标题】:createQuery useage trouble about SQLBrite and SQLdelight关于 SQLBrite 和 SQLdelight 的 createQuery 使用问题
【发布时间】:2016-10-13 03:38:56
【问题描述】:

我用SQLdelight创建sql代码,点赞

SELECT * FROM CoachService WHERE shop_id in (?) and brand_id = ?

我查询喜欢:

briteDatabase.createQuery(CoachService.TABLE_NAME, CoachService.GETBYBRANDIDANDSHOPS,  "'1','5','11'","2");

但结果为空。 然后,我像改变sqlcode一样

SELECT * FROM CoachService WHERE shop_id in ('1','5','11') and brand_id = ?

它返回 3 个结果。 为什么?

【问题讨论】:

    标签: android sqlbrite sqldelight


    【解决方案1】:

    当您传入查询参数时,它会被 android 绑定转换为字符串。因此,当您传入"'1','5','11'","2" 时,它会在查询中显示为

    SELECT * FROM CoachService WHERE shop_id in (''1','5','11'') and brand_id = ?

    或类似的东西,'1','5','11' 实际上是一个完整的字符串。

    【讨论】:

    • 我知道出了什么问题,但是如何传递参数? shop_id 可能是 '1','11' 或 '1','2','3','4',谢谢!
    • 您需要在 sqlite 文本中包含正确数量的参数。 SELECT * FROM CoachService WHERE shop_id in (?, ?, ?) and brand_id = ? 将与briteDatabase.createQuery(CoachService.TABLE_NAME, CoachService.GETBYBRANDIDANDSHOPS, "1","5","11","2"); 使用可变数量的绑定参数是不可能的。您必须在代码中手动创建查询并添加所需的参数数量。
    猜你喜欢
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2017-10-17
    • 2021-10-08
    • 1970-01-01
    • 2016-12-29
    相关资源
    最近更新 更多