- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
是否可以通过 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/
我正在使用 Xcode 7.2 和 swift 2。部署目标是 ios 9.0 这个问题与之前提出的许多问题类似,但我的问题并不常见,或者没有找到任何引用。 我为 iOS 创建了一个 cocoa to
代码 A FMDBDatabase *db = xxxxx [db beginTransaction]; [db executeUpdate:xxxx]; xxxxxxx 代码 B FMDBDatab
我正在尝试打开我在资源中的项目中拥有的数据库。 问题是好像找不到数据库文件! 我尝试了完整的路径,它可以工作,但这不是一个好的解决方案。 我想现在怎么打开它! 我正在使用此代码: db = [FMDa
我是 iOS 开发新手,我遇到了一个问题。我正在尝试使用 FMDB 更新表,但尽管它在所有模拟器中都有效,但在真实设备上却不起作用。我确信数据库已传输到设备,因为所有选择查询都正常运行。另一方面,所有
我想检查数据库中是否有一个 id 列表。这是我的代码... NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",nil]; NSStri
我使用 sqlite 和 fmdb 包装器。我的加载数据库代码是这样的: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocument
使用主线程在数据库中插入行/选择行是一个好习惯,还是我应该分派(dispatch)一个异步队列来执行此操作?在这种情况下..实现这一目标的正确做法是什么? 谢谢! 最佳答案 因为这被标记为 fmdb
我想开始使用 FMDatabaseQueue 在我的应用程序中的不同线程中同时运行查询,但我不确定如何在一个方法中实现读取操作。我正在使用此处的示例:http://ccgus.github.io/fm
您好,我正在使用 sqlite 和 FMDB 开发一个项目。一切正常。但是如果我删除旧数据库并添加一个新数据库,iphone 将无法识别有一个新数据库。它仍然适用于旧数据库。 如果我从模拟器中删除应用
我正在从数据库中获取大量数据。这是我正在做的事情的一个例子。 NSMutableArray *array = [[NSMutableArray alloc] init]; FMResultSet *s
这可能吗?如果可能的话,人们会怎么做?考虑到 Google 和 Stack 搜索,关于该主题的信息有点稀疏,批量插入有很多,但批量更新没有可靠信息。 最佳答案 是的,如果您插入正确的 SQL 是可能的
我在使用 fmdb 执行更新查询时遇到问题。它会在没有任何错误的情况下锁定应用程序。 它停在这一行: [db executeUpdate:@"UPDATE categories SET number_
您好,我正在尝试对数据库中的现有行执行更新。我一直在我的 sql 语句中使用问号 ? 并为 FMDB 提供一个值数组来替换 ?。以下是使用此逻辑的示例 INSERT 语句: let sqlStatem
SQL FMDB 的修饰符在哪里描述?特别是,如何在要插入的字符串中放置引号。比如我想将名称“Mac's Place”插入数据库?谢谢 最佳答案 如果在 SQL 中使用 executeUpdate 和
在 FMDB 中,next 函数(如 if a!.next {})既检查是否有另一行,也检查是否有另一行,我们可以单独做这些事情吗,比如只检查是否有另一行? 我已经阅读了文档,但似乎没有这种直接的方法
我想对 FMDB 是否成功创建表进行单元测试。 db.createGoodTable("good") XCTAssertTrue(db.tableExists("good")!) 我不能通过考试。错误
在我的 ios 应用程序中,我使用 FMDB 连接到 sqlite3 数据库。在app中,多线程会用到db,所以我创建了一个单例: + (id)instance { static DBManager
我正在使用 FMDB,当我想返回一些值时我正在使用 FMDatabase,当我不需要时我正在使用 FMDatabaseQueue返回任何值。当我添加到数据库并使用 FMDatabaseQueue 我没
我在我的应用程序中使用多线程环境,我需要不断访问 sqlite 数据库以更新我的 View ,并通过多个后台线程使用服务器数据更新我的数据库。现在我正在使用 FMDB 进行数据库交互,但仍然遇到数据库
在我的项目中,我使用 cocoapods 添加了 FMDB。然后我为 FMDB 创建了一个桥接头。但是,当我使用 #import "FMDB.h" 导入 FMDB.h 时,我收到错误消息“找不到 FM
我是一名优秀的程序员,十分优秀!