数据库
发布日期:2022-02-08 18:03:26
浏览次数:49
分类:技术文章
本文共 3608 字,大约阅读时间需要 12 分钟。
数据库:
需要导入:sqlite3
添加 删除 修改数据库中的数据都用的是:sqlite3_exec
查询数据库用的是:sqlite3_prepare_v2
// 创建一个sqlite3对象 以后都操作它static sqlite3 *db = nil;#pragma mark 1. 打开数据库- (void)openDB { if (db == nil) { NSString *tempPath = NSTemporaryDirectory(); NSLog(@"%@", tempPath); NSString *filePath = [tempPath stringByAppendingPathComponent:@"student.sqlite"]; // 打开路径下的数据库 int result = sqlite3_open(filePath.UTF8String, &db); if (result == SQLITE_OK) { NSLog(@"打开数据库成功"); // 写sql语句(可用某些工具生成SQL语句) NSString *sql = @"CREATE TABLE IF NOT EXISTS student (number INTEGER PRIMARY KEY NOT NULL , name TEXT, age INTEGER)"; // 执行SQL语句 int result2 = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL); if (result2 == SQLITE_OK) { NSLog(@"创建表格成功"); }else NSLog(@"创建表格失败"); }else NSLog(@"打开数据库失败"); }}#pragma mark 2. 关闭数据库- (void)closeDB { if (db != nil) { int result = sqlite3_close(db); if (result == SQLITE_OK) { NSLog(@"关闭数据库成功"); // 同时把数据库对象置空 db = nil; }else NSLog(@"关闭数据库失败"); }}#pragma mark 3. 添加数据- (void)insertStudent:(Student *)stu { // 添加的sql语句 NSString *sql = [NSString stringWithFormat:@"INSERT INTO student (number, name, age) VALUES ('%@', '%@', '%d')", stu.number, stu.name, stu.age]; int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL); if (result == SQLITE_OK) { NSLog(@"添加数据成功"); }else NSLog(@"添加数据失败");}#pragma mark 4. 删除数据- (void)deleteStudent:(NSString *)num { NSString *sql = [NSString stringWithFormat:@"DELETE FROM student WHERE number = '%@'", num]; int result = sqlite3_exec(db, sql.UTF8String, NULL, NULL, NULL); if (result == SQLITE_OK) { NSLog(@"删除数据成功"); }else NSLog(@"删除数据失败");}#pragma mark 5. 更新数据- (void)updateStudent:(Student *)stu { NSString *sql = [NSString stringWithFormat:@"UPDATE student SET name = '%@' , age = '%d' WHERE number = '%@'", stu.name, stu.age, stu.number]; int result = sqlite3_exec(db, sql.UTF8String, nil, nil, nil); if (result == SQLITE_OK) { NSLog(@"更新数据成功"); }else NSLog(@"更新数据失败"); }#pragma mark 6. 查询数据- (NSMutableArray *)selectStudent { NSMutableArray *arrayAll = [NSMutableArray array]; // 有条件的查询 直接加一个where语句就可以啦 NSString *sql = [NSString stringWithFormat:@"SELECT * FROM student"]; // 游标 sqlite3_stmt *stmt = nil; // int nByte为-1时:自动计算sql语句的长度 int result = sqlite3_prepare_v2(db, sql.UTF8String, -1, &stmt, NULL); if (result == SQLITE_OK) { NSLog(@"开始查找数据"); // 一行一行的去查找数据 直到找完 while (sqlite3_step(stmt) == SQLITE_ROW) { // 获取number const char *num1 = (const char *)sqlite3_column_text(stmt, 0);// 第二个参数递增 NSString *number = [NSString stringWithCString:num1 encoding:NSUTF8StringEncoding]; // 获取name const char *name1 = (const char *)sqlite3_column_text(stmt, 1); NSString *name = [NSString stringWithCString:name1 encoding:NSUTF8StringEncoding]; // 获取age int age = sqlite3_column_int(stmt, 2); // 把取到的数据放到数据模型中 Student *stu = [[Student alloc] init]; stu.name = name; stu.number = number; stu.age = age; [arrayAll addObject:stu]; } }else NSLog(@"查询失败"); // 游标用完之后要释放: sqlite3_finalize(stmt); return arrayAll;}第三方FMDB 也类似,比这个简单 在“自己看的东西”里有提到
转载地址:https://blog.csdn.net/Evelynzn/article/details/49757895 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月03日 18时30分57秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
说说 Canvas 的缩放功能
2019-04-26
系统架构设计笔记(72)—— 信息系统工程
2019-04-26
系统架构设计笔记(73)—— 政府信息化与电子政务
2019-04-26
系统架构设计笔记(74)—— 企业信息化与电子商务
2019-04-26
系统架构设计笔记(75)—— 知识管理与商业智能
2019-04-26
说说在 log4j 中如何把日志记录到不同的文件中
2019-04-26
说说 jBPM 流程定义语言(3)—— state 活动 (状态活动)
2019-04-26
说说如何安装 Jenkins 2.x
2019-04-26
说说什么是 Android 的碎片(Fragment)
2019-04-26
说说如何使用 Android 的碎片(Fragment)
2019-04-26
说说 Android 碎片 (Fragment) 的生命周期
2019-04-26
运行 Tomcat, 在 Intellij IDEA 控制台输出中文乱码的解决方法
2019-04-26
说说 Android 中动态加载布局的实用技巧
2019-04-26
说说 Android 中如何实现同时兼容手机与平板的新闻应用界面
2019-04-26
说说 Android 的广播机制
2019-04-26
说说在 Android 中如何接收系统广播
2019-04-26
说说在 Android 中如何发送自定义广播
2019-04-26
说说如何使用 Android 的本地广播
2019-04-26