IOS开发基础之SQLite3数据库的使用增删改查

ios开发我们可能会使用到数据库进行持久化存储。sqlite3 是轻量级的数据库。
今天我们来介绍sqlite3 数据库。此方法跟java的增删改查很类似。
源码在我的主页里面。

//
//  ViewController.m
//  sqlite3
//
//  Created by 鲁军 on 2021/2/24.
//#import "ViewController.h"
#import <sqlite3.h>
@interface ViewController ()
{sqlite3 *_db;
}
@end
@implementation ViewController
/*在应用程序第一次运行,由于沙盒中没有数据库 ,所以需要创建一个空的数据库创建数据库的之后,为了保证能够正常运行 通常需要做一些初始化工作,其中最重要的一项工作就是创建数据库的表而下次使用时 无需再创建数据库表了**/
- (void)viewDidLoad {[super viewDidLoad];//1.[self openDB];//NSLog(@"%@",NSHomeDirectory());[self createTable];//操作数据
//    NSArray *array = @[@"张三",@"李四",@"王二",@"赵六"];
//    for(int i = 0;i<50;i++){//        NSString *str=array[arc4random_uniform(4)];
//        NSString *name = [NSString stringWithFormat:@"%@%d",str,arc4random_uniform(1000)];
//        NSString *phoneNo = [NSString stringWithFormat:@"1889%05d",arc4random_uniform(100000)];
//        [self addPerson:name age:18 + arc4random_uniform(20) phoneNo:phoneNo];
//    }[self allPersons];
}
-(void)allPersons{NSString *sql= @"SELECT id,name,age,phoneNo FROM t_person";// 1. 评估准备SQL语句是否正确sqlite3_stmt *stmt = NULL;if(SQLITE_OK==sqlite3_prepare_v2(_db, sql.UTF8String, -1, &stmt, NULL)){//2 如果能够正常查询。调用单步执行方法。依次取得查询结果while(SQLITE_ROW==sqlite3_step(stmt)){int ID = sqlite3_column_int(stmt, 0);const unsigned char *name = sqlite3_column_text(stmt, 1);int age = sqlite3_column_int(stmt, 2);const unsigned char *phoneNo = sqlite3_column_text(stmt, 3);NSString *nameUTF8 = [NSString stringWithUTF8String:(const char *)name];NSString *phoneNoUTF8 = [NSString stringWithUTF8String:(const char *)phoneNo];NSLog(@"%d -- %@  - %d -- %@",ID,nameUTF8,age,phoneNoUTF8);}//3 获取显示查询结果}else{NSLog(@"SQL语法错误 ");}//4 释放句柄sqlite3_finalize(stmt);
}-(void)addPerson:(NSString *)name age:(NSInteger)age1 phoneNo:(NSString *)phoneNo {NSString *sql =[NSString stringWithFormat:@"INSERT INTO t_person (name, age, phoneNo) VALUES ('%@', '%d', '%@')", name, age1, phoneNo];[self execSql:sql msg:@"添加个人记录"];
}
-(void)execSql:(NSString *)sql msg:(NSString *)msg{char *errmsg;if(SQLITE_OK==sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &errmsg)){NSLog(@"%@成功",msg);}else{NSLog(@"%@失败-%s",msg,errmsg);}
}
-(void)createTable{NSString * sql = @"create table IF NOT EXISTS t_person (id integer PRIMARY KEY AUTOINCREMENT,name text,age integer,phoneNo text)";[self execSql:sql msg:@"创建表"];}
-(void)openDB{NSString *docDir =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];NSString * dbName = [docDir stringByAppendingPathComponent: @"my.db"];//SQLite 数据库的连接,基于连接可以进行数据库的操作if( SQLITE_OK == sqlite3_open(dbName.UTF8String, &_db)){NSLog(@"创建打开数据库成功");}else{NSLog(@"创建数据库失败");}
}
@end



IOS开发基础之SQLite3数据库的使用增删改查相关推荐

  1. 2019-8-3 [Java_JSP] 实战:Servlet 模式开发动态网页达成数据库表的增删改查业务

    文章目录 4.Servlet实战 4.1 需求概述 4.2 具体实现 4.2.1 项目初始化 1) 整理数据库 2) 整理表 3) 创建项目 4) 创建各类包在src下 4.2.2 entity层-用 ...

  2. Flask框架——数据库操作命令(增删改查)

    目录 创建数据表 添加数据 插入单条数据 插入多条数据 查询数据 全部查询 精确查询 模糊查询 主键查询 排序 修改数据 删除数据 删除数据表 上篇文章我们学习了Flask框架--数据库配置及迁移同步 ...

  3. 基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查

    基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查 转载于:https://github.com/Meowv/Blog 本篇说一下自定义仓储的实现方式,其实在ab ...

  4. java调用oracle删除,使用IDEA对Oracle数据库进行简单增删改查操作

    1.1 java中的数据存储技术 在java中,数据库存取技术可分为如下几类: 1.jdbc直接访问数据库 2.jdo(java data object)是java对象持久化的新的规范,也是一个用于存 ...

  5. sqlite数据库的基本增删改查操作

    2019独角兽企业重金招聘Python工程师标准>>> 效果图示例 1.在清单里添加相应的权限 <uses-permission android:name="andr ...

  6. python数据库教程_Python连接mysql数据库及简单增删改查操作示例代码

    1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连 ...

  7. jaba窗体连接mysql增删改查_知识实现——Java使用jdbc连接MySql数据库,实现增删改查...

    Java使用jdbc连接MySql数据库,实现增删改查 首先,导入MySql连接数据库的jar包,我用的是 mysql连接jar包 DB类,用于获得数据库连接 import java.sql.Driv ...

  8. 数据库的操作 增删改查 mysql

    数据库的操作 增删改查 mysql 登陆数据库 查看全部的数据库 系统提供的库,除了 test 是给我们练手的 其它的不要碰 mysql库,保存了系统重要内容,比如帐户 root帐户的用户名,密码,就 ...

  9. thinkphp连mysql增删改查_ThinkPHP5.1框架数据库链接和增删改查操作示例

    本文实例讲述了ThinkPHP5.1框架数据库链接和增删改查操作.分享给大家供大家参考,具体如 本文实例讲述了ThinkPHP5.1框架数据库链接和增删改查操作.分享给大家供大家参考,具体如下: 一. ...

最新文章

  1. 基于GeoMipmap的地形系统。
  2. 移动端开发高清效果和多屏适配
  3. DRM-内容数据版权加密保护技术学习(上):视频文件打包实现(转)
  4. 如何优雅地在公众号输入数学公式?推荐几款神器
  5. 汇编基础知识之输入输出
  6. 邮件系统之webmail
  7. 光纤收发器常见六大故障,三分钟全部搞定
  8. 一场关于动态化开发实践的技术探讨
  9. Minio Docker 单机安装(二种模式) linux
  10. azure devops中文显示乱码_Azure DevOps Server:Git权限设置
  11. 一、Ajax跨域访问
  12. 呼叫中心客服交流三大法宝
  13. 多线程设计模式 - Future模式
  14. 被平均(统计平均)的陷阱
  15. 计算机与信息处理基础知识教案,高效的信息处理工具——计算机基础知识教案...
  16. 个人mysql配置命令
  17. 云小蜜知识库维护的流程和维护建议
  18. 移远BC95 NB-IoT模块串口发送数据到服务器
  19. 使用nmake编译Gdal源代码(Win10, VS2022)
  20. Dummy variable (变量dummy化)

热门文章

  1. linux 中文文件名不能下载不了,linux 64位系统 mod_encoding解决中文文件名不能下载问题...
  2. 不能安装_钢厂为什么不能随意更换一氧化碳报警器安装位置
  3. oracle awr 数据删除,Oracle AWR 删除历史快照 说明【转自dave偶像大神】
  4. java实现简易聊天窗口先运行服务器还是客户端_一个简易聊天功能的服务器端和客户端源码...
  5. sql开启mysql远程连接_CentOS系统中安装MySQL和开启MySQL远程访问的方法
  6. imx6 linux编译,IMX6学习记录(3)-LINUX编译
  7. 20220215-CTF-MISC-BUUCTF-爱因斯坦-binwalk分析图片-dd命令分离ZIP文件--图片属性中寻找密码
  8. python前端界面模板_Python编程flask使用页面模版的方法
  9. mysql 外键(foreign key)的详解和实例_MySQL数据库外键
  10. python中module的意思_python中module的意思