IOS SqlLite3数据库
来源:互联网 发布:布谷布谷软件 编辑:程序博客网 时间:2024/05/23 02:00
ios数据库操作 : 利用单例对数据库进行管理
数据库操作: 创建数据库 创建表 关闭数据库 增 删 改 查 操作
// 初始化单例方法 在单例中进行初始化+ (SqlLiteManger *)shareManger;// 如果要使用数据库 需要引用一个框架 // 引入一个libsqlite3.0框架 引入头文件 sqlite3.h// 数据库操作第一步 打开 数据库- (sqlite3 *)openDB;// 数据库 关闭- (void)closeDB;// 数据库 创建表- (void)createTable;// 数据库插入操作 StudentModel 是一个model类- (void)insertInto:(StudentModel *)student;// 删除 根据条件删除- (void)deleStudentWithAge:(NSInteger)age;// 修改 - (void)updataName:(NSString *)name setAge:(NSInteger)age;// 查询 分为单条查询 和 多条查询- (StudentModel *)selectName:(NSString *)name andAge:(NSInteger)age;// 查询全部- (NSArray *)selectAllStudent;
实现初始化方法 在初始化之前需要理解 ios中sqlLite3 的语句 在这最容易出现问题的就是sql语句
// 初始化 单例方法+ (SqlLiteManger *)sharManger{ static SqlLiteManger *man = nil; if (man == nil) { man = [[SqlLiteManger alloc]init]; }return man;}// 数据库操作之前需要 先定义个 指针 用来负责连接数据库 能够保证数据库从开始到结束都能够使用 在关闭的时候释放// 创建连接数据库的指针static sqlite3 *db = nil;// 打开数据库- (sqlite3 *)openDB{ if (db != nil) { return db; }// 不存在就去创建一个数据库 先找到存放数据库的位置NSString *document = [NSSearchPathForDirectoriesInDocument(NSDocumentDirectory, NSUserDomainMask, YES)lastobject];// 在document 文件夹下面添加数据库文件NSString *path = [document stringByAppendPathCompoent:@"Student.sqlite"];// 创建数据库 int result = sqlite3_open(path.UTF8String, &db); if (result == SQLITE_OK) { NSLog(@"数据库创建成功"); } else { NSLog(@"数据库创建失败"); } return db;}// 关闭数据库- (void)closeDB{ int result = sqlite3_close(db); if (result == SQLITE_OK) { NSLog(@"关闭成功"); // 如果关闭成功 就把数据库置为空 下次操作的时候 再次创建 db = nil; } else { NSLog(@"关闭失败"); }}
操作数据库步骤大致有以下几步:
1 打开数据库
2 写sql语句
3 执行sql语句
4 判断sql语句 是否成功
5 关闭数据库
// 创建数据库表- (void)createTable { db = [self openDB]; NSString sql = @"create table IF NOT EXISTS LanStudent(number integer primary key not NULL, name text not NULL, gender text not NULL, age integer not NULL);";int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);if (result == SQLITE_OK) { NSLog(@"创建成功"); } else { NSLog(@"创建失败"); } [self closeDB]; }
// 插入(增加)
- (void)insertInto:(StudentModel *)student { db = [self openDB];NSString *sql = [NSString stingWithFormat:@"insert into LanStudent(number, name, gender, age) values('%ld', '%@', '%@', '%ld');", student.number, student.name, student.gender, student.age];int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL);if (result == SQLITE_OK) { NSLog(@"插入成功");} else { NSLog(@"插入失败"); }[self closeDB];}
// 删除
- (void)deleStudentWithAge:(NSInteger)age{ db= [self openDB]; NSString *sql = [NSString stringWithFormat:@"delete from LanStudent where age > '%ld'", age]; int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL); if (result == SQLITE_OK) { NSLog(@"删除成功"); } else { NSLog(@"删除失败"); } [self closeDB];}
// 更改
// 更新数据库- (void)updataName:(NSString *)name setAge:(NSInteger)age{ db = [self openDB]; NSString *sql = [NSString stringWithFormat:@"update LanStudent set age = '%ld' where name = '%@'", age, name]; int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL); if (result == SQLITE_OK) { NSLog(@"更改成功"); } else { NSLog(@"更改失败"); } [self closeDB];}
// 查询
// 查询操作比其他的操作复杂 // 单条查询- (StudentModel *)selectName andAge:(NSInteger)age { db = [self openDB]; NSString *sql = [NSString stringWithFormat:@"select * from LanStudent where name = @'%@' and age = '%ld'", name, age]; // 创建一个 跟随指针 用来保存sql语句sqlite3_stmt *stmt = nil;int result = sqlit3_prepare_v2(db, sql.UTF8Strig, -1, &stmt, NULL);if(result == SQLITE_OK) { NSLog(@"成功"); sqlite3_bind_text(stmt, 1, name.UFT8String, -1, NULL);// 参数2 查询条件的顺序 // 参数3 查询条件的字段名称 需要转换为c 语言格式 // 参数4 长度 -1// 参数5 绑定后执行的函数 一般写 NULLsqlite3_bind_int(stmt,2, -1);// 开始查询while (sqlite3_step(stmt) == SQLITE_ROW) { char *name = (char *)sqlite3_column_text(stmt, 1); char *gender = (char *)sqlite3_column_text(stmt, 2); int age = sqlite3_column_int(stmt, 3); int number = sqlite3_column_int(stmt, 0);// 给model赋值StudentModel *model = [[StudentModel alloc]init];model.name = [NSString stringWithUTF8String:name];model.gender = [NSString stringWithUTF8String;gender];model.age = age;model.number = number;// 释放跟随指针sqlite3_finalize(stmt);// 关闭数据库[self closeDB];// 返回数据 并且释放对象[self closeDB];return [model autorelease];} } else { NSLog(@"失败"); }[self closeDB];return nil;}
// 查询全部
// 查询所有- (NSArray *)selectAllStudent{ // 1 db = [self openDB]; // 2 NSString *sql = [NSString stringWithFormat:@"select * from LanOuStudent"]; // 3 创建一个跟随指针 sqlite3_stmt *stmt = nil; // 4 运行 int result = sqlite3_prepare_v2(db, sql.UTF8String, -1, &stmt, NULL); // 5 if (result == SQLITE_OK) { NSLog(@"查询成功"); //6 不用绑定 改成创建一个数组 用来保存 查询好的model NSMutableArray *array = [NSMutableArray array]; // 7 开始查询 while (sqlite3_step(stmt) == SQLITE_ROW) { // 8 读取数据 char *name = (char *)sqlite3_column_text(stmt, 1); char *gender = (char *)sqlite3_column_text(stmt, 2); int age = sqlite3_column_int(stmt, 3); int number =sqlite3_column_int(stmt, 0); // 9 给model赋值 LanOuStudent *model = [[LanOuStudent alloc]init]; model.name = [NSString stringWithUTF8String:name]; model.gender = [NSString stringWithUTF8String:gender]; model.age = age; model.number = number; // 10 把model 放到数组里面 [array addObject:model]; // 11 释放学生对象 [model release]; } // 12 释放跟谁指针 sqlite3_finalize(stmt); // 13 关闭数据库 [self closeDB]; // 14 返回数组 return array; } else { NSLog(@"查询失败"); } // 16 [self closeDB]; return nil;}
1 0
- IOS SqlLite3数据库
- sqllite3
- SQLLITE3
- SQLlite3
- Sqllite3
- Ios 封装sqllite3的接口
- IOS SqlLite3 使用笔记(一)
- ios学习笔记 --sqllite3
- sqllite3常用命令
- SQLLite3 转载
- [iOS 使用sqllite3.0] 创建表 , 增/删/查/改 常用命令语句
- openwrt使用sqllite3总结
- Python操作sqllite3
- SqlLite3修改表,增加唯一索引
- windows上使用sqllite3的链接整理
- sqllite3命令行下的常用命令及接口
- iOS 数据库
- ios 数据库
- Handler
- C#异常处理
- 收集的工具箱
- LeetCode Invert Binary Tree
- SQL Server自动备份、压缩和删除压缩
- IOS SqlLite3数据库
- 100道经典Java面试题及答案
- JSP页面用EL表达式 输出date格式
- linux-折腾桌面
- 开通博客感
- poj 2187 计算几何入门题 凸包
- 刚刚开通博客
- 欢迎使用CSDN-markdown编辑器
- float和absolute