IOS使用FMDB创建数据库删除沙盒后会崩溃怎么办

IOS使用FMDB创建数据库删除沙盒后会崩溃怎么办,第1张

创建数据

选择开始菜单中→程序→【Management SQL Server 2008】→【SQL Server Management Studio】命令,打开【SQL Server Management Studio】窗口,并使用Windows或 SQL Server身份验证建立连接。

在【对象资源管理器】窗口中展开服务器,然后选择【数据库】节点

右键单击【数据库】节点,从d出来的快捷菜单中选择【新建数据库】命令。

执行上述 *** 作后,会d出【新建数据库】对话框。在对话框、左侧有3个选项,分别是【常规】、【选项】和【文件组】。完成这三个选项中的设置会后,就完成了数据库的创建工作,

在【数据库名称】文本框中输入要新建数据库的名称。例如,这里以“新建的数据库”。

在【所有者】文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用【使用全文索引】复选框。

在【数据库文件】列表中包括两行,一行是数据库文件,而另一行是日记文件。通过单击下面的【添加】、【删除】按钮添加或删除数据库文件。

切换到【选项页】、在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。

切换到【文件组】页,在这里可以添加或删除文件组。

完成以上 *** 作后,单击【确定】按钮关闭【新建数据库】对话框。至此“新建的数据”数据库创建成功。新建的数据库可以再【对象资源管理器】窗口看到。

如果需要使用FMDB对整个数据进行加密,则需要引入SQLCipher。

一、如果xcode使用cocoapods管理第三方库,则可以直接引入:pod 'FMDB/SQLCipher'

二、也可以使用手动动集成,把sqlite3.c和sqlite3.h加入到工程目录,然后在project的build setting里改动两个配置:

   1、other c flags下添加如下设置:

   2、 other link flags下添加如下设置:

三、报错问题:

如果出现sqlite3_key方法报错,提示如下:Implicit declaration of function 'sqlite3_key' is invalid in C99

则可能是因为搜索不到sqlite3.h,需要把sqlite3.c和sqlite3.h所在目录添加到header search path下面,如:

$(SRCROOT)/myproject/SQLCipher

(一)FMDB的基本介绍

FMDB 同时兼容ARC与非ARC工程,会自动根据功臣的配置来调整相关的内存管理。

FMDB常用类:

FMDatabase:一个单一的数据库,用于执行SQL语句

FMResultSet:执行查询一个FMDatabase的结果集

FMDatabaseQueue:在多个线程来执行查询和更新数据库的数据

(二)数据库 *** 作:

创建数据库

建表(创建一张表)

增(向表中插入新数据inset or replace into)

删(删除表中数据delete)

改 (修改数据库中当前已有的数据update)

查(查询语句select)

总结:数据库增删改等 *** 作:除了查询 *** 作,FMDB数据库 *** 作都执行executeUpdate方法,这个方法返回BOOL型。

数据库查询 *** 作: 查询 *** 作使用了executeQuery,并涉及到FMResultSet。

(三)代码学习

在实际项目中一般使用databaseQueue,

创建数据库

- (void)openDBWithFileName:(NSString *)fileName dbName:(NSString *)dbName{

//首先判断传入的参数

if (!fileName.length || !dbName.length) {

return

}

//获取文件目录

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, NO)

NSString *documentDirectory =[paths firstObject]

NSString *pathDirectory = nil

if (fileName.length !=0 ) {

pathDirectory = [documentDirectory stringByAppendingPathComponent:fileName]

}

// 创建文件夹

if (![[NSFileManager defaultManager] fileExistsAtPath:pathDirectory]) {

NSError *error

[[NSFileManager defaultManager] createDirectoryAtPath:pathDirectory withIntermediateDirectories:YES attributes:nil error:&error]//参数YES,表示不管有没有这个文件夹都会去创建,如果参数为no,则 只会在没有这个文件夹的时候才会创建

if (error) {

NSLog(@"%@",[error description])

}

}

//创建数据库

NSString *dbPath = [pathDirectory stringByAppendingPathComponent:dbName]

if (!_dbQueue) {

NSLog(@"%@",[FMDatabaseQueue databaseQueueWithPath:dbPath])

self.dbQueue = [FMDatabaseQueue databaseQueueWithPath:dbPath]

NSLog(@"%@__open",self.dbQueue)

}

}

插入数据


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11556157.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存