gpt4 book ai didi

ios - 通过 FMDB 将数组传递给 sqlite WHERE IN 子句?

转载 作者:IT王子 更新时间:2023-10-29 06:18:40 27 4
gpt4 key购买 nike

是否可以通过 FMDB 将数组传递给 SELECT … WHERE … IN 语句?我试图像这样内爆数组:

NSArray *mergeIds; // An array with NSNumber Objects
NSString *mergeIdString = [mergeIds componentsJoinedByString:@","];

NSString *query = @"SELECT * FROM items WHERE last_merge_id IN (?)";
FMResultSet *result = [database executeQuery:query, mergeIdString];

这仅在数组中恰好有 1 个对象时有效,这让我相信 FMDB 在整个内爆字符串周围添加了引号。

所以我尝试将数组原样传递给 FMDB 的方法:

NSArray *mergeIds; // An array with NSNumber Objects
NSString *query = @"SELECT * FROM items WHERE last_merge_id IN (?)";
FMResultSet *result = [database executeQuery:query, mergeIds];

这根本不起作用。

我没有在自述文件或 FMDB 的 github 页面上的示例中找到任何相关信息。

谢谢,斯特凡

最佳答案

我遇到了同样的问题,并且我想通了,至少对于我自己的应用程序而言。首先,像这样构造您的查询,将问号的数量与数组中的数据量相匹配:

NSString *getDataSql = @"SELECT * FROM data WHERE dataID IN (?, ?, ?)";

然后使用executeQuery:withArgumentsInArray调用:

FMResultSet *results = [database executeQuery:getDataSql withArgumentsInArray:dataIDs];

在我的例子中,我在名为 dataIDs 的 NSArray 中有一个 NSString 对象数组。我尝试了各种方法来使这个 SQL 查询正常工作,最后通过这种 sql/函数调用的组合,我能够获得正确的结果。

关于ios - 通过 FMDB 将数组传递给 sqlite WHERE IN 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8383684/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com