iOS--sqlite数据库(举例)

IOS swift版 sqlite3详解 IOS中的SQLite3的封装与详细应用SQLite是一个开源的嵌入式关系数据库,特点是易使用、高效、安全可靠、可移植性强。IOS中的本地持久化存储NSUserDefault:一般用于存储小规模数据、业务逻辑弱的数据。keychain: 苹果提供的可逆存储,因为有着只要app不重装系统、可以同步iCloud的特性,一般用来对用户的标识符或者一些需要加密的小数据进行存储。归档:主要原理是对数据进行序列 阅读详情

写一个学生类 .h文件中定义四个属性
原代码:

@property(nonatomic ,copy)NSString *name;
@property(nonatomic ,copy)NSString *sex;
@property(nonatomic ,copy)NSString *hobby;
@property(nonatomic ,assign)NSInteger age;

创建一个数据库工具:继承于NSObject
在这之前要先找到一个框架 libsqlite3.0.dylib 加入到工程中
在这个工具类中引入头文件
(1).引入要存数据的类的头文件
(2).数据库的头文件

#import <sqlite3.h>
#import "Student.h"

在.h文件延展 用来保存数据库的地址

@interface dataBaseTool : NSObject
{
// 用来保存数据库对象的地址
sqlite3 *dbPoint;
}

为了保证当前数据在工程里是唯一的 ,我们用简单单例的方式创建一个数据库工具对象
(1).在.h文件中写一个方法

+ (dataBaseTool *)sharDataBaseTool;

(2).在.m文件中写实现方法

+ (dataBaseTool *)sharDataBaseTool{
  static dataBaseTool *tool;
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{
    tool =[[dataBaseTool alloc] init];
  });
  return tool;
}

1.打开数据库
(1).在.h文件中创建方法

-(void)openDB;

(2).在.m文件中实现方法

-(void)openDB{
  // 数据库文件也保存在沙盒的documents文件里, 所以先找沙盒路径
  NSArray *sandBox =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 1, YES);
  NSString *sandBoxPath =sandBox[0];
  // 拼接文件路径 ,如果系统根据这个文件路径查找的时候有对应文件则直接打开数据库,如果没有则会创建一个相应的数据库  
   NSString *documentPath =[sandBoxPath stringByAppendingPathComponent:@"Student.sqlite"];   
  int result =sqlite3_open([documentPath UTF8String], &dbPoint);
  if (result == SQLITE_OK) {
        NSLog(@"数据库打开成功");
        NSLog(@"%@",documentPath);
  }else{
        NSLog(@"数据库打开失败");
  }

(3).在viewController中调用
引入student类和dateBaseTool数据库的头文件

#import "dataBaseTool.h"
 #import "Student.h"

调用:

[[dataBaseTool sharDataBaseTool] openDB];

2 .给数据库创建张表格 ,table
(1).在.h文件中定义方法:

-(void)createTable;

(2).在.m文件中实现方法

-(void)createTable{
 // primary key 是主键的意思 ,主键在当前表格前表里数据是唯一的,不能重复,可以是唯一的标示一条数据,一般是整数
   // zutoincrement自增 ,为了让主键不重复,会让主键采用自增的方式
   // if not exists 如果没有表才会创建,防止重复创建覆盖之前数据
   // 数据库问题%90是sql语句出问题,所以保证语句没问题,再放到工程里使用
   NSString *sqlStr =@"create table if not exists stu(number integer primary key autoincrement, name text, sex text, age integer, hobby text)";
   // 执行这条sql语句
   int result = sqlite3_exec(dbPoint, [sqlStr UTF8String], nil, nil, nil);
   if (result == SQLITE_OK) {
      NSLog(@"表创建成功");
   }else {
      NSLog(@"表创建失败");
   }
}

(3).调用

[[dataBaseTool sharDataBaseTool] createTable];

3.向表里插入一个学生信息
(1).h

-(void)insertStu:(Student *)stu;

(2).m

-(void)insertStu:(Student *)stu{
  // 语句里值的位置要加上单引号
  NSString *sqlStr =[NSString stringWithFormat:@"insert into stu (name, age, sex, hobby) values ('%@', %ld, '%@', '%@')", stu.name, stu.age, stu.sex ,stu.hobby];
// 执行sql语句
  int result =sqlite3_exec(dbPoint, [sqlStr UTF8String], nil, nil, nil);
  if (result == SQLITE_OK) {
    NSLog(@"添加学生成功");
  }else{
    NSLog(@"添加学生失败");
  }
}

(3).调用

创建一个stu  
Student *stu =[[Student alloc] init];
  stu.name =@"zhang";
  stu.age =20;
  stu.sex =@"nan";
  stu.hobby =@"ying";
  // 调用添加的方法
  [[dataBaseTool sharDataBaseTool] insertStu:stu];

4.更新表里的学生数据
(1).h

- (void)updateStu:(Student *)stu;

(2).m

- (void)updateStu:(Student *)stu{
  NSString *sqlStr = [NSString stringWithFormat:@"update stu set name = '%@', sex = '%@', hobby = '%@', age = %ld where name = '%@'",stu.name, stu.sex, stu.hobby ,stu.age,stu.name];
  // 执行sql语句
  int result =sqlite3_exec(dbPoint, [sqlStr UTF8String], nil, nil, nil);
  if (result == SQLITE_OK) {
    NSLog(@"更新成功");
  }else{
    NSLog(@"更新失败");
  }
}

(3).调用

创建一个stu <br /> Student *stu =[[Student alloc] init]; <br /> stu.name =@&quot;zhang&quot;; <br /> stu.sex =@&quot;nan&quot;; <br /> stu.hobby =@&quot;xuexi&quot;; <br /> stu.age =30; <br /> 调用 <br /> [[dataBaseTool sharDataBaseTool] updateStu:stu];

5.删除数据
(1).h

-(void)deleteStu:(Student *)stu;

(2).m

-(void)deleteStu:(Student *)stu{
  NSString *sqlStr =[NSString stringWithFormat:@"delete from stu where name = '%@'",stu.name];
  int result =sqlite3_exec(dbPoint, [sqlStr UTF8String], nil, nil, nil);
  if (result == SQLITE_OK) {
    NSLog(@"删除成功");
  }else{
    NSLog(@"删除失败");
  }
}

(3).调用
删除 学生名字是zhang的学生信息

 Student *stu =[[Student alloc] init];
    stu.name =@"zhang";   
 [[dataBaseTool sharDataBaseTool] deleteStu:stu];
  1. 查询数据库中所有学生表里的数据
    (1).h
-(NSMutableArray *)selectAllStu;

(2).m

-(NSMutableArray *)selectAllStu{
 // 查询逻辑
   // 1.先从本地的数据库中读取某张表里的所有数据
   // 2.然后逐条进行读取,对model进行赋值
   // 3.把已经赋值好的model放到数组中,并且返回
   NSString *sqlStr =@"select * from stu";
   // 在语句里 * 是通配符的意思 ,通过一个 *相当于代替了表里的所有的字段名
   // 接下来需要定义一个跟随指针,他用来遍历数据库表里中的每行数据
   sqlite3_stmt *stmt =nil;
   // 第三个参数:查询语句字数限制 , -1是没有限制
   int result =sqlite3_prepare_v2(dbPoint, [sqlStr UTF8String], -1, &stmt, nil);
   // 这个方法相当于把数据库和跟随指针相关联,一同完成查询功能
   // 初始化一个用来装学生的数组
   NSMutableArray *stuArr =[NSMutableArray array];
   if (result == SQLITE_OK ){
      NSLog(@"查询成功");
      // 开始便利查询数据库的每一行
     while(sqlite3_step(stmt)== SQLITE_ROW){
 // 让跟随指针进行便利查询, 如果没有行,才会停止循环
// 满足条件,则逐列的读取这一行上的数据
// 第二个参数表示当前这列数据在表中的第几列
        const unsigned char *name =sqlite3_column_text(stmt, 1);
        const unsigned char *sex = sqlite3_column_text(stmt, 2);
        int age =sqlite3_column_int(stmt, 3);
        const unsigned char *hobby  =sqlite3_column_text(stmt, 4);
        // 把列里面的数据在进行类型的转换
        NSInteger stuAge = age;
        NSString *stuName =[NSString stringWithUTF8String:(const char*)name];
        NSString *stuSex =[NSString stringWithUTF8String:(const char*)sex];
        NSString *stuHobby =[NSString stringWithUTF8String:(const char*)hobby];
 // 给对象赋值 ,然后把对象放到数组里
        Student *stu =[[Student alloc] init];
        stu.name =stuName;
        stu.sex =stuSex;
        stu.hobby =stuHobby;
        stu.age =stuAge;
        [stuArr addObject:stu];
      }
   }else{
      NSLog(@"查询失败");
      NSLog(@"%d",result);
   }         
 return stuArr;
}

(3).调用

创建数组接收数据
NSMutableArray *arr =[[dataBaseTool sharDataBaseTool] selectAllStu];
遍历数组    
for (Student *stu in arr) {
        NSLog(@"%@",stu.name);
    }

7.关闭数据库
(1).h
-(void)closeDB;
(2).m

-(void)closeDB{
    int result =sqlite3_close(dbPoint);
    if (result == SQLITE_OK) {
        NSLog(@"数据关闭成功");
    }else{
 NSLog(@"数据关闭失败");
    }    
}

(3).调用

[[dataBaseTool sharDataBaseTool ] closeDB];
mysq数据库资源 所有行业分类,全国各省、市、县,招聘要求,福利待遇等等等等SQL,执行就可生成表,使用方便 立即下载

相关推荐

车企常用架构、通信设计、需求管理工具全汇总

车辆技术是个系统工程,比较大,需要多人协作。“协作”往往需要工具参与,才能保证协作过程的高效、有条不紊。 【文章系转载,出处见图片水印】 今天我们就来捋一捋汽车行业常用的架构、网络开发工具~ Preevision 大名鼎鼎的Preevision,来自大名鼎鼎的Vector。 个人觉得,它是Vector公司最牛逼、最神秘、最高高在上的产品,犹如空谷回响、千里传音,但是很少看到它真正落地。 它最引以为傲的,或许是在给客户做介绍的时候,说“我们甚至能够精确到每一根线束的长度”,但是反观.

MaveDiao的博客 3484

MySQL入门:如何创建数据库?

本文详细概述了如何使用不同的方法和工具(包括用于MySQL的命令行,工作台和dbForge Studio)在MySQL中创建数据库。 MySQL是基于SQL的关系数据库管理系统。它是由Oracle Corporation开发,分发和支持的。MySQL是免费的开源软件,由于其可靠性,兼容性,成本效益和全面的支持,它正越来越受到欢迎。 MySQL有一个分支– MariaDB,由MySQL的原始开发人员制造。MariaDB具有相同的数据库结构和索引,因此可以代替MySQL。 MySQL和MariaDB都支持

qq_42444778的博客 12万+

别再只会用官网例子了!Vxe-Table过滤功能深度自定义:从下拉框到服务端筛选的完整配置流程

本文深入解析Vxe-Table表格组件的过滤功能,从基础UI定制到服务端筛选的完整实现流程。通过实战案例演示如何超越官方示例,实现下拉框、日期范围等复杂过滤交互,并详细讲解混合过滤策略与性能优化技巧,帮助开发者应对大数据量场景下的表格筛选需求。

weixin_42526353的博客 205

数据库(详细步骤)

写一个学生类 .h文件中定义四个属性原代码:@property(nonatomic ,copy)NSString *name; @property(nonatomic ,copy)NSString *sex; @property(nonatomic ,copy)NSString *hobby; @property(nonatomic ,assign)NSInteger age;创建一个数据库工具:继

MLtianya的博客 1482

从GEFCom到UCI:手把手教你构建电力负荷时空预测模型(Python版)

本文详细介绍了如何从GEFCom到UCI数据集构建电力负荷时空预测模型(Python版),涵盖数据集解析、时空特征工程、模型架构设计及工业部署优化。通过多任务图神经网络(MTGNN)实现高精度预测,并结合边缘计算和在线学习机制提升实际应用效果,为能源管理系统提供可靠解决方案。

lambda的博客 812

CloudCompare

分割点云:选中要分割的点云文件–>Segment–>左键框出要分割的点或者区域–>Segment Out–>Comfirm Segmentation,原点云文件被分割成两个结构,选中分割出来的remaining,右键delete即可。qSRA (Surface of Revolution Analysis):计算一个点云和一个假定旋转平面之间的距离(旋转平面用2D轮廓定义),距离计算好后,用户可以创建一个偏差的2D图或者圆柱或圆锥的投影。②表现为同样的对象或者至少有同样的形状。

xiaoyaolangwj的博客 4709

MySQL从零到精通:三步上手数据库创建与数据操作全攻略

本文专为数据库新手打造!无论你是想快速入门MySQL的开发者,还是需要巩固基础的技术爱好者,我们将以最直观的方式带您掌握两大核心技能:数据库创建与数据操作(CRUD)。数据库作为现代应用的"记忆中枢",其操作能力直接影响系统性能与数据安全。✅ 数据库创建全流程解析✅ 增删改查四大核心操作详解✅ 20+个真实场景代码示例✅ 关键安全操作警示与优化技巧。

nice_lcj520的博客 466

保姆级教程:在RV1126开发板上跑通YOLOv5口罩检测(从数据集到摄像头实时识别)

本文提供了一份详细的RV1126开发板部署YOLOv5口罩检测系统的全流程指南,涵盖数据集准备、模型训练优化、边缘部署及实时摄像头识别等关键步骤。重点解析了RV1126开发板的性能特征、YOLOv5模型训练调优技巧、RKNN模型转换量化策略,以及部署过程中的性能优化方案,帮助开发者高效实现边缘端目标检测应用。

weixin_27310985的博客 106

第一章:数据库的创建和操作

嘿,亲爱的小伙伴们!数据库就如同一个神秘而强大的魔法宝库,妥善创建它,等于为你的海量数据安了一个温馨舒适的家。本文就像一位贴心的向导,带你轻松上手数据库的创建与操作之旅。从确定需求开始,一步步教你选择合适的数据库管理系统,仿佛在为宝库挑选一把坚固的钥匙。在操作方面,涵盖了数据的插入、查询、更新和删除等基本操作,通过实际案例展示,就像在宝库中进行一场场精彩的寻宝游戏。同时强调了数据库的优化和维护,这就像是给宝库不断升级加固,确保其高效稳定运行。快来开启这场奇妙之旅,让你的数据在魔法宝库中绽放光彩吧!

2302_76674204的博客 4517

CST仿真微带贴片天线学习笔记

谐振频率为3.48GHz,基板采用Rogers RT5880板材,介电常数2.2,损耗角正切0.0009,厚度1.57mm,馈电方式为同轴馈电。

qq_36521926的博客 9431

基于Simulink的永磁同步电机力位混合控制(导纳+位置)仿真

本文详细介绍了基于Simulink的永磁同步电机(PMSM)力位混合控制系统实现方法。主要内容包括:1) 通过导纳控制原理(二阶质量-阻尼-弹簧模型)实现机器人柔顺控制;2) 在Simulink中构建虚拟环境、导纳控制器、PMSM驱动系统等完整框架;3) 针对曲面恒力打磨场景,实现20N恒力跟踪(RMS误差1.2N)和位置顺应;4) 支持纯位置/导纳/恒力三种工作模式切换;5) 提供系统性能评估指标和高级扩展功能。该方案显著提升了机器人环境交互的安全性和适应性,适用于精密装配、人机协作等应用场景。

xiaoheshang_123的博客 146

iOS入门-36Sqlite轻型数据库

概述 Sqlite轻型数据库。 建表 增、删、改、查 iOS中Sqlite封装库FMDB 创建,基本使用 示例 如何通过CocoaPods引入第三方库请参看“CocoaPods安装并使用”。 示例代码 ViewController.h #import <UIKit/UIKit.h> #import "FMDatabase.h" @interface ViewController :...

gongxiaoou的博客 268

什么是 SAP Build Process Automation?

SAP Build Process Automation 是一款综合性的低代码工具,允许企业用户快速开发和自动化端到端业务流程。它整合了工作流管理、任务自动化和人工智能技术,提供了一个易于使用的平台,帮助企业更好地应对现代商业挑战。通过该工具,用户无需具备深厚的编程技能即可创建复杂的业务流程。例如,用户可以使用直观的拖放式界面设计流程、设置触发条件、定义任务分配规则,并通过内置的分析功能对流程效率进行评估。流程建模与设计:提供图形化界面,帮助用户直观地设计业务流程。任务自动化。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1257

iOS学习之sqlite的创建数据库,表,插入查看数据

iOS sqlite数据库操作。步骤是:先加入sqlite开发库libsqlite3.dylib,新建或打开数据库,创建数据表,插入数据,查询数据并打印1、新建项目sqliteDemo,添加使用sqlite的库libsqlite3.dylib2、sqlite 的方法sqlite3          *db, 数据库句柄,跟文件句柄FILE很类似sqlite3_stmt      *stmt, 这个

空杯子 15万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Sqlite轻型数据库初级理解

SQLite简介:Android四种数据存储方式的一种,SQLite是用c语言编写的开源嵌入式数据库引擎,它支持大多数sqlL92标准(可以简单的理解为支持大部分的sql语句),并且可以在所有主要的操作系统中运行。SQLite是一个轻型数据库引擎,但是它可以存储高达2T的数据,每一个数据库是以单个文件的形式进行存在,数据以B-Three的数据结构进行存储在磁盘(data/data/包名/项目名)。

qq_29781195的博客 1527

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【iOS知识学习】_iOS下SQLite的使用

SQLite是嵌入式的和轻量级的sql数据库。广泛用于包括浏览器、ios、android以及一些便携需求的小型web应用系统。 SQLite是MySQL的精简版,无需服务器就能进行;限制条件:必须手动创建数据库,没有面向对象的接口; Demo做了个简单的保存学生信息的例子,点击保存按钮可以保存信息,点击查询可以查询信息,Demo下载地址:http://download.youkuaiyun.com/det

weasleyqi的专栏 2万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【工具】DB Browser for SQLite使用教程

DB Browser for SQLite 是一款功能强大且易于上手的 SQLite 管理工具,无论是数据库入门学习、移动应用逆向分析,还是日常开发工作,都能极大提升效率。核心要点回顾图形化界面友好,适合快速创建表和修改数据SQL 执行功能强大,支持复杂查询和批量操作记得随时保存修改(Write Changes)支持 CSV 导入导出,数据迁移便捷掌握本教程内容后,你就可以熟练使用 DB4S 进行 SQLite 数据库的日常管理工作了。

Chandler2017的博客 4790

Access、SQLite,我该如何选择?

SQLite和Access,二者都是常用的轻型关系型数据库系统。在DB-Engines的数据库排名中,二者排名都比较靠前,名次也很接近,说明使用两种数据库的人群还都不少,很多朋友在二者之间难以选择。 SQLite:我虽渺小却锋利顽强! SQLite,是一款轻型的,遵守ACID的关系型数据库管理系统,她包含在一个相对小的C库中。主要为嵌入式应用设计,在很多嵌入式产品中应用广泛,她占用资源非常的低,只需要几百K的内存就够了。 笔者早年用过很多年Access,主要用作本地数据存储,对Access的品性和

木牛的博客 1万+

iOS SQLite数据库集成与SQLite语句使用深度解析(31)

SQLite采用模块化设计,核心组件包括: - **SQL解析器**:将SQL语句转换为语法树 - **代码生成器**:将语法树转换为虚拟数据库机(VDBE)指令 - **VDBE引擎**:执行指令操作B-Tree存储结构 - **B-Tree模块**:管理数据存储与索引 - **内存管理器**:负责内存分配与缓存 - **OS接口层**:提供文件系统和多线程支持

Android开发领域创作者 1070

IOS学习笔记15——SQLite数据库

SQLite是MySQL的简化版,更多的运用与移动设备或小型设备上。SQLite的优点是具有可移植性,它不需要服务器就能运行,同时,它也存在一些缺陷,首先,没有提供简单的数据库创建方式,必须手工创建数据库,其次,SQLite没有面向对象接口,必须使用依赖于C语言代码的API。相对于OC,这套API既不那么优雅,也更难使用。当相比于用文件进行存储,还是更推荐使用SQLite进行数据存储。

Ryan's zone 9063

IOS中的sqlite数据库的使用

sqlite在移动客户端的开发非常常见,我之前做过一个ios项目中也用到,无耐技术水平有限,做的不是很好!但是一查网上这方面的总结不是很多,可能大牛们都忙着赚钱去了,我就献丑将我在项目中用到的东西贡献出来,有什么不好的地方请指教。值得说明的是我是看了某个网站贴出的demo而稍作改进,若此君不小心看到本篇小作,请指出,如有需要可以删除此文。下面开始介绍我的做的东西: 1.用到主要的函数有sqlit

wise 有时疯狂 有时忧郁 7786

iOS sqlite3 数据库的操作

在iOS中使用SQLite我们需要加入libsqlite3.dylib的库,并在引入SQLite的头文件。如下    #import  导入库和头文件之后,接下来的操作就是打开一个数据库。这时候需要调用sqlite3_open这个函数来对打开一个数据库文件。此函数声明如下:  int sqlite3_open(   const char *filename,   /* D

luigi的专栏 1559

iOS SQLite3

SQLite3是嵌入在iOS中的关系型数据库,对于存储大规模的数据很有效。SQLite3使得不必将每个对象都加到内存中。这篇文章将简单介绍一下如何使用SQLite3. 注:大部分SQLite3函数返回值为SQLITE_OK为成功,否则返回SQLITE_ERROR  (1)打开数据库(若数据库文件不存在,则创建之)  SQLITE_API int sqlite3_open( constchar

小邓笔记 2575

IOS sqlite简单使用 以及为什么sqlite3_open无法创建数据库的原因

一、IOS数据存储方式 1.IOS中数据的存储方式有: 1)plist(NSArray、NSDictionary) 2)Preference(偏好设置,NSUserDefaulters) 3)NSCoding(NSKeyedArchiver) 4)sqlite3(数据库) 5)Core Data 2.其中归档、偏好设置还有plist存储都无法存储大量的数据。故大批量数据通常使

smilefish12345的博客 3513

IOS数据库操作SQLite3使用详解

iPhone中支持通过sqlite3来访问iPhone本地的数据库。 具体使用方法如下 1:添加开发包libsqlite3.0.dylib 首先是设置项目文件,在项目中添加iPhone版的sqlite3的数据库的开发包,在项目下的Frameworks点击右键,然后选择libsqlite3.0.dylib文件。 libsqlite3.0.dylib文件地址:  /Devel

huifeidexin_1的专栏 2万+
上一篇: iOS--常用的宏
下一篇: iOS-细节小结
junfeng_
博客等级 码龄12年 3粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值