object-c第三方FMDB对sqlite使用
2016-03-22 09:04
489 查看
之前写过一篇基于c语言的sqlite的操作,后来发现自己都快要忘掉了。重新看了一下自己以前写的,发现基于c语言的用起来相比FMDB第三方还是要麻烦些
其实麻烦也麻烦不到哪里去。主要是麻烦在查询数据的时候,c语言必须给定那一列,那一个字段。而fmdb得只需要给定字段就行了。其他操作还是大致相同
都是,创建数据库,打开数据库,执行sql语句,关闭数据库。
1.创建和打开数据库
2.创建表格,执行sql语句
好吧,当我写完之后发现还漏了一个问题。这个是在网上看到的。关于fmdb线程安全:
其实麻烦也麻烦不到哪里去。主要是麻烦在查询数据的时候,c语言必须给定那一列,那一个字段。而fmdb得只需要给定字段就行了。其他操作还是大致相同
都是,创建数据库,打开数据库,执行sql语句,关闭数据库。
1.创建和打开数据库
pod 'FMDB' //pod安装FMDB /////////////////////////////// #import <FMDB.h>//安装好了在项目工程里面导入 NSString *home = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];//沙盒路径 NSString *path = [home stringByAppendingString:@"student.db"];//拼接数据库文件路径 _fmdb = [[FMDatabase alloc]initWithPath:path]; if([_fmdb open]) { NSLog(@"成功"); } else { NSLog(@"失败"); }
2.创建表格,执行sql语句
//创建表 NSString *createTable = @"create table if not exists t_student(id integer primary key autoincrement not null,stuName text not null,age integer not null)"; if([_fmdb executeUpdate:createTable]) { NSLog(@"创建表格成功"); } else { NSLog(@"创建表格失败"); } //fmdb数据库查询 FMResultSet *result = [_fmdb executeQuery:sql]; while ([result next]) { int ID = [result intForColumn:@"id"]; NSString *name = [result stringForColumn:@"stuName"]; NSLog(@"%@%d",name,ID); } [result close];//关闭
好吧,当我写完之后发现还漏了一个问题。这个是在网上看到的。关于fmdb线程安全:
//线程安全:在多线程中同时使用一个FMDBatabase实例是不明智的。不要让多个线程分享同一个FMDBdatabase实例 ,他无法再多个线程中同时使用一个FMD同时使用,如果在多个线程中同时用会造成数据混乱的问题。所以使用FMDatabaseQueue,他是线程安全。 //刚写的时候一直不晓得这个_path是干嘛的。自己测试了一下,就是数据库的一个地址 FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:_path]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [queue inDatabase:^(FMDatabase *db) { FMResultSet *result = [db executeQuery:@"select * from t_student"]; while ([result next]) { NSLog(@"%@",[result stringForColumn:@"stuName"]); } }]; });
相关文章推荐
- SQLite教程(十一):临时文件
- SQLite中重置自动编号列的方法
- 保护你的Sqlite数据库(SQLite数据库安全秘籍)
- SQLite教程(十):内存数据库和临时数据库
- SQLite 入门教程二 SQLite的创建、修改、删除表
- 详解SQLite中的数据类型
- 详解SQLite中的查询规划器
- C#封装的Sqlite访问类实例
- SQLite中的B-Tree实现细节分析
- SQLite 中文指南之FAQ第1/6页
- Android Sqlite命令详解(基本命令)
- SQLite 内存数据库学习手册
- SQLite中的WAL机制详细介绍
- Sqlite数据库里插入数据的条数上限是500
- SQLite速度评测代码
- 简单分析SQLite4的一些设计改变
- C++操作SQLite简明教程
- C#实现Excel导入sqlite的方法
- C#调用SQLite的方法实例分析
- sqlite时间戳转时间语句(时间转时间戳)