iOS- 简单说说iOS移动客户端SQLite3的基本使用
来源:互联网 发布:淘宝营销词 编辑:程序博客网 时间:2024/05/21 06:33
1.为什么要使用SQLite3?
•大量数据需要存储
•管理数据,存储数据
SQLite是一种关系型数据库(也是目前移动客户端的主流数据库)
2.SQLite3的几种存储类型
a.NULL: 表示该值为NULL值
b.INTEGER: 无符号整型值
c.REAL: 浮点值
d.TEXT: 文本字符串
e.BLOB: 二进制数据(比如文件)
•实际上SQLite是无类型的,建表时声明或不声明类型都可以,也就意味着创表语句可以这么写:
create table t_student(name, age);
但为了保持良好的编程规范,方便程序员之间的交流,编写建表语句的时候最好加上每个字段的具体类型
3.SQLite3的具体实现
3.1
•在iOS中要使用SQLite3,需要添加库文件:libsqlite3.dylib并导入主头文件,这是一个C语言的库
3.2
创建数据库(sqlite3_opendb)
3.2 创建数据库(sqlite3_opendb)按 Ctrl+C 复制代码// 设置沙盒中的文件路径 // 提示:在自己开发中,不要用.db结尾的sqlite数据库文件名 NSString *dbPath = [@"readme.db" appendDocumentDir]; NSLog(@"%@", dbPath); /** sqlite3_open 1) 如果数据库存在,直接打开 2) 如果数据库不存在,先创建数据库文件,再打开 */ _db = NULL; if (SQLITE_OK == sqlite3_open([dbPath UTF8String], &_db)) { NSLog(@"数据库打开成功"); } else { NSLog(@"数据库打开失败"); }按 Ctrl+C 复制代码3.3 1.单步执行操作(sqlite3_exec)复制代码#pragma mark 单步执行SQL- (void)execSQL:(NSString *)sql message:(NSString *)message{ // 执行SQL语句 char *errmsg = NULL; if (SQLITE_OK == sqlite3_exec(_db, [sql UTF8String], NULL, NULL, &errmsg)) { NSLog(@"%@成功!", message); } else { // C语言中字符串输出应该用%s NSLog(@"%@失败 - %s", message, errmsg); }}复制代码2.创建数据表复制代码1 // 1. 检查沙盒,判断数据库文件是否存在,如果存在就不再建表;2 // 2. 数据库的方法:IF NOT EXISTS,放在表名之前即可3 // 定义SQL语句4 NSString *sql = @"CREATE TABLE IF NOT EXISTS T_Person (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT, gender INTEGER, age INTEGER, height REAL)";5 6 [self execSQL:sql message:@"创建数据表"];复制代码4.插入数据1 // 1. SQL2 NSString *sql = [NSString stringWithFormat:@"INSERT INTO T_Person (name, gender, age, height) VALUES ('%@', %d, %d, %f)", person.name, person.gender, person.age, person.height];3 4 [self execSQL:sql message:@"新增个人记录"];5.更新数据复制代码1 //修改2 - (void)updatePerson:(Person *)person{3 4 5 NSString *sql = [NSString stringWithFormat:@"update t_Person set name = '%@' where id=%d",person.name,person.ID];6 7 [self execSQL:sql msg:@"修改"];8 9 }复制代码6.删除数据复制代码1 //删除2 - (void)removePerson:(NSInteger)personID{3 4 5 NSString *sql = [NSString stringWithFormat:@"delete from t_Person where id=%d",personID];6 7 [self execSQL:sql msg:@"删除"];8 9 }复制代码7.查询操作–sqlite3_prepare_v2检查sql的合法性–sqlite3_step逐行获取查询结果–sqlite3_coloum_xxx获取对应类型的内容–sqlite3_finalize释放stmt复制代码 1 // 1. SQL 2 NSString *sql = @"SELECT id, name, age, gender, height FROM T_Person"; 3 4 // 2. 查询语句通常是使用字符串拼接出来的 5 // 因此,在正常使用查询语句之前,需要检查SQL语句的语法正确! 6 sqlite3_stmt *stmt = NULL; 7 8 if (SQLITE_OK == sqlite3_prepare_v2(_db, [sql UTF8String], -1, &stmt, NULL)) { 9 NSLog(@"语法正确");10 // 利用句柄,逐一查询符合条件的数据11 // sqlite3_step 每次提取一条查询的记录行,不断重复,一直取到最后一条记录位置12 while (SQLITE_ROW == sqlite3_step(stmt)) {13 // 取到行信息,逐一获取每一列的内容14 // iCol对应的就是SQL语句中字段的顺序,从0开始15 // 根据实际查询字段的属性,使用sqlite3_column_xxx取得对应的内容即可16 int ID = sqlite3_column_int(stmt, 0);17 const unsigned char *name = sqlite3_column_text(stmt, 1);18 int age = sqlite3_column_int(stmt, 2);19 int gender = sqlite3_column_int(stmt, 3);20 CGFloat height = sqlite3_column_double(stmt, 4);21 22 // const unsigned char *直接输出看不出结果,需要转换23 NSString *nameUTF8 = [NSString stringWithUTF8String:(const char *)name];24 25 Person *p = [Person personWithID:ID name:nameUTF8 age:age gender:gender height:height];26 27 NSLog(@"%@", p);28 }29 } else {30 NSLog(@"语法错误");31 }复制代码
0 0
- iOS- 简单说说iOS移动客户端SQLite3的基本使用
- ios简单使用sqlite3
- ios简单使用sqlite3
- iOS 简单使用sqlite3数据库
- ios SQLite3的使用
- IOS sqlite3的使用
- IOS SQLite3的使用
- iOS sqlite3 的基本使用(增 删 改 查)
- 第四十二篇:IOS 的 sqlite3 一些基本使用
- ios Sqlite3的简单使用 增删改查
- ios学习--SQLite3的使用
- 使用IOS的嵌入式SQLite3
- ios对SQLite3的使用
- SQLite3在iOS的使用
- SQLite3在iOS的使用
- 【iOS】数据库SQLite3的使用
- ios对SQLite3的使用
- iOS Sqlite3 数据库的使用
- 记录一次剁手的"sudo rm -rf /bin"(误删linux /bin目录)
- css设置怎么弄。。。。。
- Linux 的多线程编程的高效开发经验
- Linux下的串口编程(二)
- php 注意点随记
- iOS- 简单说说iOS移动客户端SQLite3的基本使用
- PDU短信发送之二
- HDU 1317--XYZZY 【spfa判断正环求最长路径 && floyd求传递闭包】
- 国内GIS论坛
- 观察者模式的解读与思考
- web的用处
- FZU2150
- HDU 1258 Sum It Up
- [C++学习笔记]--函数指针