问题标签 [fmdb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 获取 SQLite 上最后插入行的 ID 的最佳方法
在 iPhone 上,使用 FMDB 获取 SQLite 数据库中最后插入行的 ID 的最佳方法是什么?
有没有更好的方法而不是这样做:
objective-c - 如何使 FMDB 的数据库成为单例
我已经使用 SQLite 一段时间了,并决定去 FMDB。我需要使它成为一个单例。下面是我的代码;为了让 FMDB 访问单例 d/b,我需要进行哪些更改?
这是我使用 FMDB 初始化 d/b 的代码:
objective-c - SQLite:数据库错误,“内存不足”
我正在使用 FMDB 创建记录并将其添加到 ad/b。创建 d/b 的方法是:
这不会导致错误。但是,当我接下来在“打开”之后执行一 (1) 个“插入”时,我从 FMDB 收到一条错误消息,提示 DB 错误:7“内存不足”。在此之后的每个 sql 语句,我都会得到同样的错误(只有 d/b 的创建没有给出错误!)。这是插入的代码:
这是一个非常小的 d/b,数据最少。我跑了 Inspector,没有什么不寻常的。任何建议将不胜感激。
ios - FMDB 多线程问题
在我的 ios 应用程序中,我使用 FMDB 连接到 sqlite3 数据库。在应用程序中,db将用于多线程。因此,我以这种方式创建了一个单例:
但是 Error: FMDataBase is current in use ,有时会发生。然后我更新实例:
错误仍然存在。所以我的问题是如何正确创建单例以及为什么代码无法避免错误。谢谢!
xcode - 循环不工作时 SQlite-FMDatabase 查询
我有一个表“关键字”,它有 2 列“pk”和“文本”。在 firefox SQLite manager 中,我可以看到“text”列中有两个名字“john”和“tom”。我的代码中没有错误或警告。当我在模拟器中运行它时,我可以在控制台中看到我永远不会进入 While 循环。这意味着 FMResultSet "rs" 没有从 SQL 查询中得到任何结果。我收到 "Opened successfully" 消息意味着我的数据库已打开没有任何问题,并且数据库路径、数据库名称等都是正确的。我的查询也是正确的,因为它没有在控制台中显示任何查询错误。但我没有收到“while loop started”消息。我的数据库数组也是空的,所以我知道 while 循环不起作用。我正在使用 FMDatabase。这是我的代码
cocoa - 可能的 FMDatabase/FMResultSet 错误
尽管我很少遇到 FMDatabase 问题,但我今天注意到一些奇怪的行为,并且想知道这是一个错误还是由于我自己的错误。
奇怪的是,这一切都很好,但我想安全起见并在 while 循环之前使用 [db hasAnotherRow] 的 if 语句,但即使结果集确实包含结果,这也会返回 NO。
当我将结果字典(使用 FMResultSet 的 resultDict 方法)记录到控制台时,我收到来自 FMResultSet 的警告“警告:此集中似乎没有列”。即使我可以在我的 while 循环中使用它们。
我在这里错过了什么吗?
iphone - sqlite3 无法为我读取数据库,但不能在另一台机器上进行相同的提交
背景
sqlite
我们有一个用于大型数据库的 iPhone 应用程序。我们使用FTS3
全文搜索,所以我们必须“推出我们自己的”sqlite,而不是使用 iOS SDK 中包含的库。我们使用合并的 sqlite.c 文件,并FMDB
用作 Obj-C 包装器。
问题
我的项目可以编译,但它在我安装的异常中崩溃,以检测数据库是否出现故障(稍后会详细介绍)。然而,我的搭档正在愉快地编码,没有任何问题 - 在与我完全相同的提交修订上。这就是奇怪的地方。
具体来说,应用程序在首次加载时执行以下操作:
- 将数据库复制到用户的文档目录中,使其可写。(工作正常)
- 使用 FMDB 打开数据库,
databaseWithPath:
后跟open
. - 此时调用
goodConnection
FMDB 会返回YES
- 数据库确实是打开的并且正在工作。 - 调用
SELECT * FROM sqlite_master WHERE type = 'table'
不返回任何记录。(应该有很多表)
我试过的
现在,如果你让 sqlite “打开”一个不存在的数据库——它只会创建一个。这就是这种行为的样子。因此,我打开了一个终端窗口,导航到模拟器上我的应用程序的 Documents 目录,然后输入:
它运行 sqlite3,当然,一切看起来都很好。我所有的数据都在那里。
我逐行检查了 FMDB 的打开方法,以确保我打开了正确的数据库。看来我确实是。
我尝试的第一件事是降级到 Xcode 3.2.6。同样的问题,所以我认为我已经排除了编译中的 Xcode 3/4 差异(尽管我一开始怀疑)。
有没有人可以尝试调试,或者知道我的问题可能是什么?
objective-c - FMDatabase 是否存在“NOT IN”问题或 iPhone 上的 SQLite 不支持它?
我正面临 FMDatabase 的严重问题。我正在使用如下查询
我使用“NOT IN”是因为可能有一个我想排除的别名列表而不是“example_alias”。但奇怪的是,这个查询的结果包括我想要排除的别名的所有记录。所以 FMDatbase 选择了错误的记录。如果我将此查询复制并粘贴到 SQLite 数据库浏览器中并在那里执行,则查询正确完成。
如果我删除“IN”前面的“NOT”,那么 SQLite 数据库浏览器将向我显示具有给定别名的所有记录,并且正如预期的那样,FMDatabase 将给我所有没有它们的记录...
在下一步中,我想替换 SELECT使用 DELETE,但如果保留所有不需要的记录并删除我想要保留的记录,这确实很痛苦。
这是 FMDatabase 或底层 SQLite 框架的已知错误(我使用的是 libsqlite3.dylib)还是我做错了什么?
iphone - fmdb iphone 3g 大阵列
我在使用固件为 4.2.1 (8C148) 的 iphone 3g 时遇到了 fmdb 问题。我有一个包含 sql 命令(从数据库下载)的大型 NSMutableArray。我通过 NSAutoreleasePool 填充 NSMutableArray(为 iphone 3g 释放一些内存的一部分),我得到了一个 40+ mb 的数组。
然后,我使用以下命令:
在更新过程中,我获得了 40/50 Mb 的内存分配。Iphone 3g 无法处理这个问题,它以 1 级警告惨遭失败并最终退出。
我在 iphone 3GS 上试过,效果很好。
有谁知道如何跳过它?我不能使用核心数据(尽管它是一个很好的解决方案),因为我已经有一个与应用程序捆绑在一起的大型数据库。
iphone - 如何在 FMDB Sqlite 中复制 FMResultset
我试图从一个方法返回 FMResult 对象的引用,并试图从返回的对象中访问值,但无法访问。
那么任何人都可以建议如何从方法返回 FMResult 对象并从外部访问它。
提前致谢.....