jjzjj

ios - sqlite+fmdb 真空命令后内存泄漏(?)

我通过FMDB包装器在我的应用程序中使用sqlite。在调用VACUUM之前,我的应用程序的内存使用量为2.25MB:[myFmdbexecuteUpdate:@"VACUUM;"];后记为5.8MB,我似乎无法回收内存。真空后,Instruments/Allocations工具显示大量带有事件字节的sqlite3MemMalloc调用,每个调用分配1.5K。如果不关闭数据库并重新打开它(一个选项),我该如何清理它?编辑:关闭并重新打开数据库连接会清除内存。这是我的解决方案,除非有人可以对此有更深入的了解。 最佳答案 我在sqlit

ios - SQL WHERE IN 子句不起作用 - FMDB - 传递逗号分隔的字符串

我已经搜索了所有的问题,但还没有找到答案。我最接近的是这个PassinganarraytosqliteWHEREINclauseviaFMDB?.但是,建议的答案似乎没有用。该命令不会抛出任何错误,但它也不会执行预期的操作(例如删除)。这是我正在尝试做的事情:[myDBexecuteUpdateWithFormat:@"DELETEFROMtableWHERErow_idIN(%@)",rowIdsToBeDeleted];rowIdsToBeDeleted是一个逗号分隔的NSString,其中包含作为NSNumber对象的rowId,例如1000,1001,1002,1003,100

objective-c - sqlite 程序在模拟器上运行,而不是在设备上运行

我在xcode的iOS模拟器上运行一个SQLite搜索程序,它工作得很好,但是,当我在我的iPhone上运行它时,它给我一个错误,说“错误打开!:14”我猜它是数据库路径,但我不知道如何修复它。 最佳答案 文件路径:NSArray*arrayPathComponent=[NSArrayarrayWithObjects:NSHomeDirectory(),@"Documents",@"yourdatabasename.sqlite",nil];destinationPath=[NSStringpathWithComponents:ar

iphone - 使用 FMDB 执行 sqlite 查询

我在我的一个iPhone项目中使用SQLite的FMDB框架。代码如下:for(inti=0;iCatID是固定的,即由用户提供。carrID使用for循环获取并查询。每次SQL查询后,_total数组都会递增(添加新对象),但这是挂起的。假设我们的"AMOUNT"输出为100,CatID.count次对象被添加到_total数组。请告诉我哪里做错了。 最佳答案 在执行SQL查询时,不要使用[NSStringstringWithFormat:]方法。相反,只需按原样使用查询并沿[databaseexecuteQuery:]中的字符串

ios - 如何使用 fmdb 为 native trigger.IO 插件构建 native ios 数据库。

我想使用native插件使用native数据库进行存储。由于Apple的基本API是纯C语言,我想使用第三方库,例如FBDB。理想情况下,我们的javascript将构造“查询”并将其发送到我们的native插件进行处理,但这不是绝对必要的。如何导入第3方库以供使用?FMDBlibrary有哪些部分我是否要包含以及如何添加libsqlite3.dylib?FMDB是否也应该以ForgeModule和ForgeModuleResources为目标?我看过docs关于这一点,但我很难将这些说明具体应用于FMDB。您能否更详细地告诉我一个好的文件结构应该是什么样子的?您甚至会推荐使用FMDB

iphone - 我如何替换当前打开的 FMDB 数据库以保留当前队列?

我有一个关于在SQLite中存储数据的应用程序的问题。数据使用FMDB包装器读取,如果服务器端数据库发生变化,则必须对用户透明地进行更新。为此,每当下载新数据库时,我都会用一个新对象替换我的单例中的整个FMDatabase对象。但是,瞬间查询将失败,例如,如果用户当前正在滚动表格View。那么问题来了,如何在保留当前队列的同时替换当前打开的.sqlite文件?编辑:查询经常针对数据库运行,例如当ScrollView时有count()s所以没有简单的方法来“阻止”用户暂时与数据库交互。 最佳答案 在数据库更新的那一瞬间添加一个UIAc

ios - FMDB:更新时数据库被锁定

我正在使用FMDB,当我想返回一些值时我正在使用FMDatabase,当我不需要时我正在使用FMDatabaseQueue返回任何值。当我添加到数据库并使用FMDatabaseQueue我没有错误(除非我在开​​始时创建一个新数据库,当我删除数据库然后创建[nodatabasetodelete所以它创建一个新的])。问题是当我使用相同的FMDatabaseQueue更新我的database时出现错误:Unknownerrorfinalizingorresettingstatement(5:databaseislocked)DBQuery:UPDATEtraps_tableSETdist

ios - 我什么时候应该关闭 FMDatabaseQueue?

我正在使用FMDB在我的iOS应用程序中存储各种信息...有时会发生,多个线程访问我的FMDatabase同时,所以我决定使用FMDatabaseQueue与我的SQLite数据库交互。在我看来,打开和关闭FMDatabaseQueue是不可能的底层FMDatabase.这是正确的吗?创建一个可以吗FMDatabaseQueue在应用程序启动时实例,在任何地方和从多个线程使用它并在应用程序退出时关闭它?如果不是:有人可以向我解释FMDatabaseQueue是如何产生的吗?有用吗? 最佳答案 我认为FMDBreadme已经为您解答了

ios - SQLite 数据库总是空的 (FMDB)

我正在做一个我已经做过多次的非常经典的例程,但在这个项目中,它不起作用。当我想使用我的数据库时,出现“Nosuchtables”错误。哪个应该是错的。我检查了bundle数据库,没问题;我检查了手机中的“结果”数据库,它完全是空的(没有结构,显然也没有数据)。这是我的数据库创建例程。每次我需要数据库时我都会调用它。+(FMDatabase*)createAndCheckDataBase{BOOLsuccess;NSArray*docPaths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask

ios - SQLITE (fmdb) 选择 x 为空的位置不起作用

我在iOS上使用FMDB,尝试使用如下语句查询表,select*fromtestwherefooisNull在sqliteCAPI中,这最终使用此API绑定(bind)到null,intsqlite3_bind_null(sqlite3_stmt*,int);这是行不通的。通过似乎正确地将列绑定(bind)到null的fmdb调用的选择没有找到匹配的记录。如果在sqlite3命令行session中我执行以下命令,它可以工作,但不能通过FMDB通过sqliteCAPI。select*fromtestwherefooisNull;这是重现问题的fmdb代码。看起来fmdb正在执行调用sql