使用 fmdb 写入 sqlite db?

Posted

技术标签:

【中文标题】使用 fmdb 写入 sqlite db?【英文标题】:Writing to sqlite db using fmdb? 【发布时间】:2010-07-10 17:41:48 【问题描述】:

好的,所以我知道 fmdb 已经完全过时了,核心数据就在它所在的位置,但现在,我只需要调整我正在开发的应用程序,它使用 fmdb 从资源文件夹中的 sqlite db 读取.

我需要能够写入我的数据库。执行查询的最佳方式是什么?我尝试做与从数据库读取相同的事情:

FMResultSet * set = [[UIApp database] executeQuery:[customQueries selectAll], book];

我将字符串 selectAll 从 SELECT 语句更改为 INSERT INTO 语句,并将变量 book 传递给插入,但这似乎不起作用...

我错过了什么?我需要做什么才能写入我的 sqlite 数据库?谢谢!

【问题讨论】:

fmdb 并没有过时,它正在积极开发中。 ;) 【参考方案1】:

要插入,您可以这样做,其中 db 是对您的 FMDatabase 的引用:

[db executeUpdate:@"insert into theTable (field1, field2) values(?, ?)", 
    theField1, theField2, nil];

确保参数列表末尾有一个 nil(查询中的 2 个问号表示两个参数和一个 nil),并确保您使用 NS 类型作为参数。如果你尝试使用 int 作为参数,它会崩溃,你需要使用 NSNumber 来代替。

【讨论】:

【参考方案2】:
FMDatabase* db = [FMDatabase databaseWithPath:dbPath];

FMResultSet *rs = [db executeQuery:@"select * from table"];
while ([rs next]) 
    NSLog(@"%d", [rs intForColumn:@"id"];


// Close the result set.
[rs close];  

// Close the database.
[db close];

【讨论】:

您忘记打开数据库了,否则仍然不正确,因为他们要求的是插入和更新数据库的方法,而不是选择数据记录。

以上是关于使用 fmdb 写入 sqlite db?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 IOS Swift 中使用 SQLite 使用 FMDB 处理多个线程

如何在 swift 3 中使用现有的 SQLite? (FMDB)

如何通过 FMDB 将数据保存和检索到 sqlite

sqlite3 和 fmdb 嵌套 FMResultSet 是可能的吗?

iOS 设备上的 SQLCipher + DB 性能较差

FMDB - 无法从 Cocoa 修改数据库