sqlite3是轻量级的数据库, 多用于移动端, 由于sqlite3多是C语言函数, 操作起来比较麻烦, 下面进行封装

demo地址:https://github.com/NieYinlong/DataBaseDemo.git

首先创建数据库单例类 DataBaseHandle

//
//  DataBaseHandle.m
//  DataBaseDemo
//
//  Created by 聂银龙 on 2017/7/28.
//  Copyright © 2017年 nieyinlong. All rights reserved.
//#import "DataBaseHandle.h"static DataBaseHandle *_instance;@implementation DataBaseHandle+ (instancetype)shareInstance {static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{_instance = [[DataBaseHandle alloc] init];});return _instance;
}+ (instancetype)allocWithZone:(struct _NSZone *)zone {static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{_instance = [super  allocWithZone:zone];});return _instance;
}- (id)copyWithZone:(NSZone *)zone
{return _instance;
}#pragma mark ---关闭数据库(链接)
-(void)closeDB{int ret = sqlite3_close(_db);if (ret == SQLITE_OK) {printf("关闭成功");_db = NULL;} else {printf("关闭失败");}}// sqlite3 * 表示咱们的数据库
- (sqlite3 *)openDB
{if (_db != nil) {return _db;}NSString *docuPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject;// 数据库路径NSString *db_suffix = [NSString stringWithFormat:@"%@.db", @"YLDataBase"];NSString *dbPath = [docuPath stringByAppendingPathComponent:db_suffix];int result = sqlite3_open(dbPath.UTF8String, &_db);if (result == SQLITE_OK) {NSLog(@"创建(链接)数据库成功! %d = %@",result, dbPath);} else {NSLog(@"创建(链接)数据库失败! %d",result);}return _db;
}#pragma mark ---创建数据库中的表(table)
-(void)creatTableWithSql:(NSString *)sql {[self openDB];char *errmsg = NULL;int ret = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &errmsg);if (ret == SQLITE_OK) {NSLog(@"创建表成功");}else {printf("创建表失败: %s", errmsg);}}#pragma mark - 向指定表中插入数据
- (void)insertDataSql:(NSString *)sql {[self openDB];char *errmsg = NULL;int result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &errmsg);if (result == SQLITE_OK) {NSLog(@"插入成功");} else {NSLog(@"插入失败");}}#pragma mark -  删除某表中的一条数据
- (void)deleteDataSql:(NSString *)sql {[self openDB];char *errmsg = NULL;int result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &errmsg);if (result == SQLITE_OK) {NSLog(@"删除成功");} else {NSLog(@"删除失败");}
}#pragma mark -更新数据
- (void)updateDataSql:(NSString *)sql {[self openDB];char *errmsg = NULL;int result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, &errmsg);if (result == SQLITE_OK) {NSLog(@"更新成功");} else {NSLog(@"更新失败 ");}
}#pragma mark -  查询
- (id)selectDataSql:(NSString *)sql {NSMutableArray *arr = [NSMutableArray array];[self openDB];// 查询的跟随指针sqlite3_stmt *stmt;int ret = sqlite3_prepare(_db, sql.UTF8String, -1, &stmt, NULL);if (ret == SQLITE_OK) {NSLog(@"查询成功");while (sqlite3_step(stmt) == SQLITE_ROW) {// 一条数据中 第0个字段NSString *v0 = [NSString stringWithUTF8String:( char *)sqlite3_column_text(stmt, 0)];//  第1个字段NSString *v1 = [NSString stringWithUTF8String:( char *)sqlite3_column_text(stmt, 1)];//  第2个字段NSString *v2 = [NSString stringWithUTF8String:( char *)sqlite3_column_text(stmt, 2)];//  第3个字段NSString *v3 = [NSString stringWithUTF8String:( char *)sqlite3_column_text(stmt, 3)];// 打印所有数据NSLog(@"=== %@  %@  %@  %@", v0, v1, v2, v3);NSDictionary *dic = @{@"stuID" : v0,@"name"  : v1,@"age"   : v2,@"weight": v3};[arr addObject:dic];}} else {NSLog(@"查询失败");}return arr;
}@end

在ViewController使用

//
//  ViewController.m
//  DataBaseDemo
//
//  Created by 聂银龙 on 2017/7/28.
//  Copyright © 2017年 nieyinlong. All rights reserved.
//#import "ViewController.h"
#import "DataBaseHandle.h"
#import <sqlite3.h>
@interface ViewController ()
@property(nonatomic, strong) DataBaseHandle *dbHandle;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];_dbHandle = [DataBaseHandle shareInstance];}- (IBAction)actionCreateTable:(UIButton *)sender {// 创建学生表NSString *sql1 = @"CREATE TABLE  IF NOT EXISTS students (stuID text paimary key not NULL, name TEXT, age INTEGER, weight INTEGER);";[_dbHandle creatTableWithSql:sql1];
}- (IBAction)actionInsert:(UIButton *)sender {// 向表中循环插入数据for (int i = 0; i < 5; i++) {NSString *sql2 = [NSString stringWithFormat:@"INSERT INTO students (stuID, name, age, weight) values ('%d', '张飞%d号', '%d', '%d')",  i,  i, 20 + i, 60 + i];[_dbHandle insertDataSql:sql2];}
}- (IBAction)actionDelete:(UIButton *)sender {// 删除NSString *sql3 = @"delete from students where name = '张飞2号' ";[_dbHandle deleteDataSql:sql3];}- (IBAction)actionUpdate:(UIButton *)sender {NSString *sql = @"update  students set age = 1000 , name = '诸葛亮' where name = '张飞1号' ";[_dbHandle updateDataSql:sql];
}- (IBAction)actionQuery:(UIButton *)sender {NSString *sql = @"select * from students";id v = [_dbHandle selectDataSql:sql];NSLog(@"查询结果

iOS对sqlite3进行封装相关推荐

  1. 使用iOS原生sqlite3框架对sqlite数据库进行操作

    摘要: iOS中sqlite3框架可以很好的对sqlite数据库进行支持,通过面向对象的封装,可以更易于开发者使用. 使用iOS原生sqlite3框架对sqlite数据库进行操作 一.引言 sqlit ...

  2. ios中SQLite3的基本操作

    本文转自:http://blog.csdn.net/eduora_meimei/article/details/24299133 iOS关于sqlite3操作 iPhone中支持通过sqlite3来访 ...

  3. 【iOS系列】-xib封装使用

    [iOS系列]-xib封装使用 Xib文件可以用来描述某一块局部的UI界面 Xib文件的加载 修改xib文件的大小size(Freeform) 第一: NSArray *objs = [[NSBund ...

  4. 基于iOS 10、realm封装的下载器

    代码地址如下: http://www.demodashi.com/demo/11653.html 概要 在决定自己封装一个下载器前,我本以为没有那么复杂,可在实际开发过程中困难重重,再加上iOS10和 ...

  5. IOS免签支持在线封装app分发源码 免签封装带绿标

    简介: [运营版]在线IOS免签封包 查看更多关于 免签封包 的文章 分发平台 查看更多关于 分发平台 的文章 一键IOS免签 查看更多关于 一键IOS免签 的文章 支持在线封装app分发源码 查看更 ...

  6. app应用分发平台|苹果ios超级签名|APP封装打包|应用内测托管平台|iOS应用企业签名|Android应用上传内测-虾分发

    CDN分发平台-注册免审核-虾分发 https://xiafenfa.com/ app应用分发平台|苹果ios超级签名|APP封装打包|应用内测托管平台|iOS应用企业签名|Android应用上传内测 ...

  7. iOS 数据库-SQLite3 CoreData FMDB

    在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库.例如前面IOS开发系列-Objective-C之Foundation框架的文章中提到归档.plist文件存储,包括偏 ...

  8. iOS常用动画 类封装

    //这是一个很好的动画封装类 很容易明白很详细 和大家分享 // CoreAnimationEffect.h // CoreAnimationEffect // // Created by Vince ...

  9. 【iOS】sqlite3的使用(増删改查)

    目录: 一.sqlite3常用函数 二.将sqlite3集成到项目,实现増删改查 三.封装DBManager 四.Demo 一.sqlite3常用函数及解释 (1)sqlite3_open: 用来创建 ...

  10. IOS开发之sqlite封装

    上一节实现了最基本的增删改查,所有操作数据库的方法都写在控制器里,这样会有一个问题,如果修改CURD(增删改查)操作方法会非常麻烦,这一节我们对CURD进行封装,在控制器里直接调用封装好的工具. 下面 ...

最新文章

  1. python c++操作raw文件
  2. music算法原理_大话FMCW雷达之区域检测原理
  3. hdu 5464(简单dp)
  4. explode() 字符串转换数组
  5. 段错误、内存泄漏、内存溢出、堆溢出、栈溢出
  6. JPA 2.1如何成为新的EJB 2.0
  7. Python---寻找给定序列中相差最小的两个数字
  8. 网络系统计算机专用术语有哪些,计算机网络专业术语
  9. 五千的手机和两三千的手机使用起来有什么不一样?有必要买贵的吗?
  10. 微软推荐您完成Windows 10 的免费升级
  11. 全球高精度5米 12.5米 30米地形(DEM)高程数据(tif格式)下载
  12. 固定在计算机主机箱体上的起到连接计算机,固定在计算机主机箱箱体上的、起到连接计算机各种部件的纽带和桥梁作用的是( )。...
  13. 电视盒子显示ntp服务器异常,云计算-更换VRM主节点所在服务器主板后,出现VRM与NTP服务器状态异常的处理方法...
  14. matlab应用测试,moocMATLAB程序与应用单元测试答案
  15. 受疫情影响!美国大量科技初创企业要挨饿或倒闭
  16. yarn 命令学习:yarn application
  17. 读书笔记:培训师必修课
  18. AD(十五)3D模型的创建和导入
  19. Ambari 2.7.5+HDP3.1.5离线安装详细教程(附安装包)
  20. 汉能面试-互联网老辛根据学员面试录音整理

热门文章

  1. Flutter系列五:State的生命周期
  2. ffmpeg--异常打印
  3. SAT词汇备考之(Barrons)巴朗3500基础词汇(List 49)
  4. 帝国cms ajax,帝国CMS注册体验加强 ajax检测用户名和密码
  5. Markdown表格合并单元格
  6. 计算机科学的刊物卷号,期刊的卷号和期号怎么看
  7. AttributeError: module ‘win32com.gen_py.00020905-0000-4B30-A977-D214852036FF
  8. 怎么恢复计算机文件查看方式,win7电脑打开方式怎么还原?win7电脑还原打开方式的方法...
  9. 西游记中唐僧禅心坚定不好女色
  10. 嵌入式实践教程--Android HAL自定义HAL代码教程