IOS开发基础之SQLite3数据库的使用增删改查
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数据库的使用增删改查相关推荐
- 2019-8-3 [Java_JSP] 实战:Servlet 模式开发动态网页达成数据库表的增删改查业务
文章目录 4.Servlet实战 4.1 需求概述 4.2 具体实现 4.2.1 项目初始化 1) 整理数据库 2) 整理表 3) 创建项目 4) 创建各类包在src下 4.2.2 entity层-用 ...
- Flask框架——数据库操作命令(增删改查)
目录 创建数据表 添加数据 插入单条数据 插入多条数据 查询数据 全部查询 精确查询 模糊查询 主键查询 排序 修改数据 删除数据 删除数据表 上篇文章我们学习了Flask框架--数据库配置及迁移同步 ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查
基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查 转载于:https://github.com/Meowv/Blog 本篇说一下自定义仓储的实现方式,其实在ab ...
- java调用oracle删除,使用IDEA对Oracle数据库进行简单增删改查操作
1.1 java中的数据存储技术 在java中,数据库存取技术可分为如下几类: 1.jdbc直接访问数据库 2.jdo(java data object)是java对象持久化的新的规范,也是一个用于存 ...
- sqlite数据库的基本增删改查操作
2019独角兽企业重金招聘Python工程师标准>>> 效果图示例 1.在清单里添加相应的权限 <uses-permission android:name="andr ...
- python数据库教程_Python连接mysql数据库及简单增删改查操作示例代码
1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连 ...
- jaba窗体连接mysql增删改查_知识实现——Java使用jdbc连接MySql数据库,实现增删改查...
Java使用jdbc连接MySql数据库,实现增删改查 首先,导入MySql连接数据库的jar包,我用的是 mysql连接jar包 DB类,用于获得数据库连接 import java.sql.Driv ...
- 数据库的操作 增删改查 mysql
数据库的操作 增删改查 mysql 登陆数据库 查看全部的数据库 系统提供的库,除了 test 是给我们练手的 其它的不要碰 mysql库,保存了系统重要内容,比如帐户 root帐户的用户名,密码,就 ...
- thinkphp连mysql增删改查_ThinkPHP5.1框架数据库链接和增删改查操作示例
本文实例讲述了ThinkPHP5.1框架数据库链接和增删改查操作.分享给大家供大家参考,具体如 本文实例讲述了ThinkPHP5.1框架数据库链接和增删改查操作.分享给大家供大家参考,具体如下: 一. ...
最新文章
- 基于GeoMipmap的地形系统。
- 移动端开发高清效果和多屏适配
- DRM-内容数据版权加密保护技术学习(上):视频文件打包实现(转)
- 如何优雅地在公众号输入数学公式?推荐几款神器
- 汇编基础知识之输入输出
- 邮件系统之webmail
- 光纤收发器常见六大故障,三分钟全部搞定
- 一场关于动态化开发实践的技术探讨
- Minio Docker 单机安装(二种模式) linux
- azure devops中文显示乱码_Azure DevOps Server:Git权限设置
- 一、Ajax跨域访问
- 呼叫中心客服交流三大法宝
- 多线程设计模式 - Future模式
- 被平均(统计平均)的陷阱
- 计算机与信息处理基础知识教案,高效的信息处理工具——计算机基础知识教案...
- 个人mysql配置命令
- 云小蜜知识库维护的流程和维护建议
- 移远BC95 NB-IoT模块串口发送数据到服务器
- 使用nmake编译Gdal源代码(Win10, VS2022)
- Dummy variable (变量dummy化)
热门文章
- linux 中文文件名不能下载不了,linux 64位系统 mod_encoding解决中文文件名不能下载问题...
- 不能安装_钢厂为什么不能随意更换一氧化碳报警器安装位置
- oracle awr 数据删除,Oracle AWR 删除历史快照 说明【转自dave偶像大神】
- java实现简易聊天窗口先运行服务器还是客户端_一个简易聊天功能的服务器端和客户端源码...
- sql开启mysql远程连接_CentOS系统中安装MySQL和开启MySQL远程访问的方法
- imx6 linux编译,IMX6学习记录(3)-LINUX编译
- 20220215-CTF-MISC-BUUCTF-爱因斯坦-binwalk分析图片-dd命令分离ZIP文件--图片属性中寻找密码
- python前端界面模板_Python编程flask使用页面模版的方法
- mysql 外键(foreign key)的详解和实例_MySQL数据库外键
- python中module的意思_python中module的意思