问题标签 [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.
objective-c - FMDB 结果集 ruturning nil
所以这是交易,我正在为我的数据库应用程序使用 FMDB SQLite Wrapper。我知道 Cord Data 在那里,但我的数据库真的非常庞大,我想做的就是阅读它。不会通过 iOS 应用程序插入/更新新记录。在这个应用程序的某一时刻,我试图从数据库中提取记录,这些记录是基于 searchTerm 和 searchPosition 的玩家名称和他们的 ID。searchTerm 工作得很好。searchPosition 查询在 sqlite3 中有效,但在 iOS 应用程序中无效。我不知道我哪里出错了。帮帮我。两种方法的代码如下:
这是用于根据玩家位置搜索玩家的 IBA 操作。
此方法仅提供选择的播放位置以在 pickerview 中搜索。
objective-c - iOS SQLite FMDB 事务.. 正确用法?
我将尝试使用带有 FMDB SQLite iOS 包装器的事务。
文档对交易有点含糊,但通过快速浏览一些功能,我得出了以下逻辑:
ios - FMDB 出现问题并在 searchString 的“executeQuery:”中插入值
在为我的应用程序构建搜索时,我在使用 FMDB SQLite Wrapper (https://github.com/ccgus/fmdb) 时遇到了问题。
当我用这个 SQL 命令搜索我的数据库时,一切都很好。返回了 13 个对象,我可以使用它们。
但是当我尝试从用户输入中插入 searchQuery 时,如下所示:
...该值不会插入到 SQL 命令中。而且我没有从数据库中得到任何返回的对象。即使字符串(theSearchQuery)与第一个示例中编写的相同。
另外,为了您的方便,我从 FMDB 的文档中发布了一部分。:)
在向 FMDB 提供 SQL 语句时,您不应尝试在插入之前“清理”任何值。相反,您应该使用标准的 SQLite 绑定语法:
INSERT INTO myTable VALUES (?, ?, ?) ? SQLite 将字符识别为要插入的值的占位符。执行方法都接受可变数量的参数(或这些参数的表示,例如 NSArray 或 va_list),这些参数为您正确转义。
因此,您不应该这样做(或类似的事情):
[db executeUpdate:[NSString stringWithFormat:@"INSERT INTO myTable VALUES (%@)", @"this has \"很多'奇怪的\"引号'"]]; 相反,你应该这样做:
[db executeUpdate:@"INSERT INTO myTable VALUES (?)", @"this has \"很多'奇怪的\"引号'"]; 提供给 -executeUpdate: 方法(或任何接受 va_list 作为参数的变体)的所有参数都必须是对象。以下将不起作用(并将导致崩溃):
[db executeUpdate:@"INSERT INTO myTable VALUES (?)", 42]; 插入数字的正确方法是将其装箱到 NSNumber 对象中:
[db executeUpdate:@"INSERT INTO myTable VALUES (?)", [NSNumber numberWithInt:42]]; 或者,您可以使用 -execute*WithFormat: 变体来使用 NSString 样式的替换:
[db executeUpdateWithFormat:@"INSERT INTO myTable VALUES (%d)", 42]; 在内部, -execute*WithFormat: 方法为您正确地装箱。可识别以下百分比修饰符:%@、%c、%s、%d、%D、%i、%u、%U、%hi、%hu、%qi、%qu、%f、%g、% ld、%lu、%lld 和 %llu。使用其他修饰符将产生不可预知的结果。如果由于某种原因需要 % 字符出现在 SQL 语句中,则应使用 %%。
iphone - 使用 NSDate 的 FMDB 查询执行但不生效
我通过 FMDB 执行的任何包含 NSDates 的查询都会执行,但不会返回结果集或对数据库进行编辑。我在 ios 4.3 模拟器中工作。其他未规定日期的查询正确执行。这是我使用的代码的摘录:
因此,架构在 time_stamped_table 中声明了 time_stamp:
当我在命令行的 sqlite3 中使用存储在模拟应用程序上下文中的数据库进行这些查询时,它们可以工作。是否有一些特殊的准备可以通过 NSDate 与我缺少的 FMDB 进行查询?
objective-c - FMDB,如何手动释放从 stringForColumn 创建的字符串
我正在使用 FMDB,iOS 的 SQLite Wrapper。
一般问题:
我正在从数据库中读取一个长字符串(Base64 编码图像),然后将其发送到 UIWebView 进行显示。当我弹出存储该 webview(带有图像)的视图控制器时,程序意外退出:
([Controller respondsToSelector:] 发送到已释放的实例...顺便说一句,我没有调用该方法)
该错误仅在我开始使用大字符串时才出现。在此之前从未发生过,这使我相信这可能与内存有关,并且在将字符串发送到 webview 后未在 Objective-c 中释放该字符串。
可能的解决方案
我想知道如何控制从 FMDB 的“stringForColumn”方法返回的字符串。我看到它的方式是我不能在结果字符串上调用 release 因为我没有创建它。
我很确定我需要在将该字符串发送到 webview 后立即从内存中转储该字符串(通过 stringByEvaluatingJavaScriptFromString)
任何想法都非常感谢,因为这对我来说是一个真正的表演终结者:(
谢谢!
cocoa - 如何基于公共列合并两个 FMResultSet?
我有两个单独的 SQLite db 文件,并且正在使用 FMDB 来访问它们(sqlite 的可可包装器)。
我检索了两个结果 - 每个 DB 中的一个,位于两个 FMResultSet 中。
如何使用 FMDB 根据两个结果集的单个公共列对两个 FMResultSet 进行合并和排序?
sqlite - 将外部库添加到项目时出现“Apple Mach-O (id) 链接器”错误
我将 FMDB 添加到我的项目中,然后添加了框架 libsqlite3.dylib 和 libsqlite3.0.dylib,但仍然出现构建错误。如果我从我的项目中删除 FMDB 类,那么它构建得很好。我还应该检查哪些其他事项?
有关错误的详细信息:
ld /Users/gmi/Library/Developer/Xcode/DerivedData/iNROMockUp5->gjmgpakyszrgwbbxnkdxehexacxm/Build/Products/Debug->iphonesimulator/iNROMockUp5.app/iNROMockUp5 normal i386 cd /iOSDev/Testing/iNROMockUp5 setenv MACOSX_DEPLOYMENT_TARGET 10.6 setenv PATH > Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bi>n:/bin:/usr/sbin:/sbin" /Developer/Platforms/iPhoneSimulator.platform/Developer/ usr/bin/llvm-gcc-4.2 -arch i386 >-isysroot >/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk ->L/Users/gmi/Library/Developer/Xcode/DerivedData/ iNROMockUp5->gjmgpakyszrgwbbxnkdxehexacxm/Build/Products/Debug-iphonesimulator ->F/Users/gmi/Library/Developer/Xcode/DerivedData/iNROMockUp5->gjmgpakyszrgwbbxnkdxehexacxm/Build/Products/Debug-iphonesimulator -filelist >/Users/gmi/Library/Developer/Xcode/DerivedData/iNROMockUp5->gjmgpakyszrgwbbxnkdxehexacxm/Build/Intermediates/iNROMockUp5.build/Debug->iphonesimulator/iNROMockUp5.build/Objects-normal /i386/iNROMockUp5.LinkFileList -mmacosx->version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -lsqlite3 -lsqlite3.0 -framework >MapKit -framework UIKit -framework Foundation -framework CoreGraphics -o >/Users/gmi/Library /Developer/Xcode/DerivedData/iNROMockUp5->gjmgpakyszrgwbbxnkdxehexacxm/Build/Products/Debug->iphonesimulator/iNROMockUp5.app/iNROMockUp5build/Objects-normal/i386/iNROMockUp5.LinkFileList -mmacosx->version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -lsqlite3 -lsqlite3.0 -framework >MapKit -framework UIKit -framework Foundation -framework CoreGraphics -o >/ Users/gmi/Library/Developer/Xcode/DerivedData/iNROMockUp5->gjmgpakyszrgwbbxnkdxehexacxm/Build/Products/Debug->iphonesimulator/iNROMockUp5.app/iNROMockUp5build/Objects-normal/i386/iNROMockUp5.LinkFileList -mmacosx->version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -lsqlite3 -lsqlite3.0 -framework >MapKit -framework UIKit -framework Foundation -framework CoreGraphics -o >/ Users/gmi/Library/Developer/Xcode/DerivedData/iNROMockUp5->gjmgpakyszrgwbbxnkdxehexacxm/Build/Products/Debug->iphonesimulator/iNROMockUp5.app/iNROMockUp5
ld:在/Users/gmi/Library/Developer/Xcode/DerivedData/iNROMockUp5->gjmgpakyszrgwbbxnkdxehexacxm/Build/Intermediates/iNROMockUp5.build/Debug->iphonesimulator/iNROMockUp5.build/Objects-normal/i386/fmdb.o中重复符号_main和 >/Users/gmi/Library/Developer/Xcode/DerivedData/iNROMockUp5->gjmgpakyszrgwbbxnkdxehexacxm/Build/Intermediates/iNROMockUp5.build/Debug->iphonesimulator/iNROMockUp5.build/Objects-normal/i386/main.o 架构 i386 collect2 :ld返回1退出状态命令/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2失败>退出代码1
ld:在/Users/gmi/Library/Developer/Xcode/DerivedData/iNROMockUp5->gjmgpakyszrgwbbxnkdxehexacxm/Build/Intermediates/iNROMockUp5.build/Debug->iphonesimulator/iNROMockUp5.build/Objects-normal/i386/fmdb.o中重复符号_main和 >/Users/gmi/Library/Developer/Xcode/DerivedData/iNROMockUp5->gjmgpakyszrgwbbxnkdxehexacxm/Build/Intermediates/iNROMockUp5.build/Debug->iphonesimulator/iNROMockUp5.build/Objects-normal/i386/main.o 架构 i386
命令 /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 失败,退出代码为 1
iphone - FMDB/Sqlite 查询问题
我有一个数据库,其中有一个名为 shuffledQuestions 的表,其中 2 列 category_id 和 question_id 都是主键。这是我保存随机问题的存储列表的地方。我目前的问题是我无法获取 question_id,而只是给了我 rowid。
categoryFromCategoryMenu 是一个全局字符串,旨在将其更改为其他内容,但现在当我在场景之间传递对象时它会这样做。我尝试将 categoryFromCategoryMenu 变量更改为 @"Action" 以防它只是在播放,但我仍然只是获得行 ID。
获取 question_id 列内容的唯一方法是从 sqlite 查询中删除 category_id。但是当我有多个类别时,这会带来一个问题,我不想选择所有的 question_id。只是来自特定类别的 question_id。
iphone - SQLite 更改未保存
我在 iPhone 上的 iOS 4 中使用 SQLite,但我的更新语句所做的更改没有保存。起初认为退出应用程序可能会以某种方式删除数据库,但它们甚至不会在同一会话期间持久化。初始化我的数据库的代码是(使用 FMDB):
这两种方法都被调用来创建数据库,然后插入到我调用的表中:
问题是,当我阅读MyTable
下面的语句时,我再也没有得到任何回报:
据我所见,我没有遗漏任何东西,而且数据库似乎位于可写位置。