iOS小明开发笔记(一) (数据存储篇之sqlite3的基本使用)
来源:互联网 发布:多宝视训练软件价格 编辑:程序博客网 时间:2024/04/30 19:20
一.数据存储的方式:
1.plist: (NSArray,NSString,NSDictionary等OC对象的存储)存储少量数据。
2.Preference: (偏好设置/NSUserDefaults)存储一些软件设置,记住密码,自动登录等,存储少量数据。
3.归档: (NSKeyedArchiver,NSKeyedUnarchiver)也是存储中小量数据 例如我们要归档缓存一些数据,归档文件时是归档全部的文件,读取文件的时候也是一口气读取全部的数据,如果数据量过大,内存直接爆满(不可取),当要更新数据的时候,也是重新全部归档,覆盖原有的文件,可操作性不好
4.SQLite3:数据库能够存储大批量的数据,优点如下
>.是一款轻型(轻量级,占用内存小)的嵌入式(嵌入在移动设备上(手机,ipad),不是服务器)数据库
>.运行速度快
>.建议使用工具 Navicat工具 数据库管理软件,支持大部分数据库管理软件,能够实时查看数据库中的表,字段,纪录等,能更好的理解数据库的操作(自己下载)
>.学前必备:懂得基本的数据库DDL,DML等基本使用语句,创建表,表的CRUD(增删改查,装B),本文不做介绍
5.CoreData:对SQLite3的封装 (后续写入使用说明)
6. sqlite语句
// AS取别名,count求个数
二.使用sqlite3
1.创建新项目导入框架
2.工程中包含头文件
#import <sqlite3.h>
3.直接上工程代码
#import "ViewController.h"
#import <sqlite3.h>
@interface ViewController ()
{
sqlite3 *_db;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//数据库文件存储的沙盒路径
NSString *filename = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"t_student.sqlite"];
NSLog(@"%@",filename);
// 开启数据库
// 参数1 文件名,OC字符串转换为c的字符串filename.UTF8String参数2:传入数据库的地址
int result = sqlite3_open(filename.UTF8String, &_db);
// 返回的result结果,成功则创建表
if (result == SQLITE_OK) {
NSLog(@"数据库打开成功");
//创建表的sql语句,设置主键,字段,字段格式,autoincrement(主键自动增长) text文本类型(字符串)ingeter(整型)等等
const char *sql = "create table if not exists t_student (id integer primary key autoincrement, name text, age integer);";
char *errmsg;
sqlite3_exec(_db, sql, NULL, NULL, &errmsg);
if (errmsg == SQLITE_OK) {
NSLog(@"创建表成功");
[self insertData];
}else{
NSLog(@"创建表失败");
}
}else{
NSLog(@"数据库打开失败");
}
}
// 插入数据
- (void)insertData
{
NSLog(@"正在插入数据");
// 插入30条数据
for (int i = 0; i<30; i++) {
NSString *name = [NSString stringWithFormat:@"zth-%d", arc4random()%100];
// 年龄为随机值
int age = arc4random()%100;
NSString *sql = [NSString stringWithFormat:@"insert into t_student (name, age) values('%@', %d);", name, age];
char *errorMesg = NULL;
int result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &errorMesg);
if (result == SQLITE_OK) {
NSLog(@"成功添加数据");
} else {
NSLog(@"添加数据失败:%s", errorMesg);
}
}
}
@end
4.根据打印的沙盒路径查看数据库文件
5.打开数据库文件,navicat自动打开,这时候我们可以看到t_student学生表,以及插入的30条数据,
最后,祝您操作成功,
特殊补充:实际应用中,肯定不能把代码直接写在控制器中,应该创建学生模型文件,学生管理文件,面向对象开发(自己想咯,这里只提供思路)
当然,sqlite3的使用特别烦琐,需要懂一些数据库语句,提供个第三方开源框架FMDB,操作相对简单(自己去摸索吧)。
sqlite3,在性能方面还是非常顶呱呱的,因为底层直接是c语言,相比CoreData(核心数据,苹果自带框架)要好很多,大家都知道,封装起来的东西,用着简单,底层实现原理却不清楚,甚至会自动生成一堆用不到的代码。最后,希望能帮到你们,祝您查看愉快,工作顺利
- iOS小明开发笔记(一) (数据存储篇之sqlite3的基本使用)
- iOS海哥开发笔记 (海哥原创,数据存储篇之sqlite3的基本使用)
- iOS软件开发 数据存储之SQLite3
- iOS开发之SQLite3数据存储
- iOS开发 数据存储之SQLite3
- IOS线程数据篇11之Sqlite3的基本操作
- iOS 数据存储之---sqlite3
- iOS开发24:使用SQLite3存储和读取数据
- iOS开发:使用SQLite3存储和读取数据
- iOS开发24:使用SQLite3存储和读取数据
- iOS开发24:使用SQLite3存储和读取数据
- iOS开发24:使用SQLite3存储和读取数据
- IOS线程数据篇10之Sqlite3数据库的使用
- IOS数据持久化存储之SQLite3第三方库FMDB的使用
- iOS开发之数据存储(一)
- iOS 数据存储 - SQLite3
- IOS开发学习笔记之数据存储
- IOS开发数据存储篇—libsqlite3和FMDB的基本使用和区别
- 如何在enum中保存特殊字符串
- 去除input标签/button按钮原本样式 并利用js赋值,select 中Option的增加与删除
- perl(版本为5.22.1,linux下)安装
- ios iOS中数字的格式化 NSNumberFormatter
- Gson的使用
- iOS小明开发笔记(一) (数据存储篇之sqlite3的基本使用)
- 杭电1301Jungle Roads(kruskal算法)
- @SuppressWarnings(unchecked)介绍
- 如何把man、info输出的帮助信息输出到文件中
- ListView追加/参照/削除(C#/VB.NET)
- caffe for windows 下使用caffemodel 实现cifar10的图像分类
- 程序员面试题精选100题(01)-把二元查找树转变成排序的双向链表[数据结构]
- java 抽象类和接口区别
- 重载函数2