当前位置: 首页 > news >正文

iOS开发数据库篇—SQLite简单介绍

一、离线缓存

在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等。

说明:离线缓存一般都是把数据保存到项目的沙盒中。有以下几种方式

(1)归档:NSCodeing、NSKeyedArchiver

(2)偏好设置:NSUserDefaults

(3)Plist存储:writeToFile

提示:上述三种方法都有一个致命的缺点,那就是都无法存储大批量的数据,有性能的问题。

举例:使用归档

两个问题:

(1)数据的存取都必须是完整的,要求写入的时候要一次性写入,读取的时候要一次性全部读取,这涉及到应用的性能问题。

(2)如果有1000条数据,此时要把第1001条数据存入,那么需要把所有的数据取出来,把这条数据加上去之后,再存入。

说明:以上的三种技术不能处理大批量数据的存储,大批量数据通常使用数据库来进行存储。

二、SQLite简单介绍

1.ios中数据的存储方式

(1)Plist(NSArray\NSDictionary)

(2)Preference(偏好设置\NSUserDefaults)

(3)NSCoding(NSKeyedArchiver\NSkeyedUnarchiver)

(4)SQLite3

  (5)Core Data

说明:

3是版本号,是SQLite的第三个版本。

core Data是对SQLite的封装,因为iOS中使用的SQLite是纯C语言的。

2.SQLite

(1)什么是SQLite?

答:SQLite是一款轻型的嵌入式数据库,安卓和ios开发使用的都是SQLite数据库

(2)特点(优点)

  答:1)它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了

  2)它的处理速度比Mysql、PostgreSQL这两款著名的数据库都还快

(3)什么是数据库

答:数据库(Database)是按照数据结构来组织、存储和管理数据的仓库

(4)数据库的分类

答:可以分为2大种类

关系型数据库(主流)和对象型数据库(直接把内存中的对象塞入到数据库,对比关系型数据库而言性能不能很好,效率不高)

(5)常用关系型数据库有哪些?

答:PC端:Oracle、MySQL、SQL Server、Access、DB2、Sybase

  嵌入式\移动客户端:SQLite

(6)数据库是如何存储数据的?

答:数据库的存储结构和excel很像,以表(table)为单位 。表由多个字段(列、属性、column)组成,表里面的每一行数据称为记录

(7)数据库存储数据的步骤?

1)新建一张表(table)

2)添加多个字段(column,列,属性)

3)添加多行记录(row,record,每行存放多个字段对应的值)

三、Navicat

Navicat是一款著名的数据库管理软件,支持大部分主流数据库(包括SQLite)

1.Navicat的安装

(1)下载该软件后,先打开该软件

(2)把文件拖入到应用程序拷贝

(3)破解版,千万不要打开app,先打开sn.app

(4)点击patch,找到应用程序的路径,点击open.

(5)点击Generate,生成注册码

(6)点击activate,选择文件,open

(7)退出sn,打开安装文件,完成安装

2.Navicat的使用

  新建一个SQLite3数据库

创建一个新的数据库

设置数据库保存的位置(新建一个文件夹):

起个名称之后,保存

设置数据库连接的名称

完成之后,双击连接数据库

注意:yangyong是连接名称,不是数据库,利用yangyong这个连接,连接了main数据库。几项依次是表、视图、索引、触发器、查询。

新建一张表,设置字段名

保存,设置表名(建议以t开头以下划线隔开,以示区分,说明这是张表)

相关文章:

  • iOS开发拓展篇—音效的播放
  • 基于COOKIE的点击流数据仓库构建思路(一)
  • Tomcat热部署和虚拟目录配置
  • 被遗忘的Logrotate
  • 压合细节
  • windows下安装python科学计算环境,numpy scipy scikit ,matplotlib等
  • IC卡的传输协议(2)-块传输协议T=1续【转】
  • Elasticsearch 2.3.0 老版本升级指南
  • java web
  • Office online server 部署
  • JRE与JDK简介
  • ConcurrentHashMap
  • Oracle语句异常
  • jmeter 302请求测试
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • github指令
  • IndexedDB
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • springboot_database项目介绍
  • Travix是如何部署应用程序到Kubernetes上的
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 当SetTimeout遇到了字符串
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • Java数据解析之JSON
  • 仓管云——企业云erp功能有哪些?
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​虚拟化系列介绍(十)
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #if #elif #endif
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (论文阅读40-45)图像描述1
  • (三)Honghu Cloud云架构一定时调度平台
  • (算法)Travel Information Center
  • (转)四层和七层负载均衡的区别
  • .NET Standard 的管理策略
  • .net 按比例显示图片的缩略图
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET企业级应用架构设计系列之开场白
  • @开发者,一文搞懂什么是 C# 计时器!
  • [ JavaScript ] JSON方法
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [2023-年度总结]凡是过往,皆为序章
  • [asp.net core]project.json(2)
  • [BUG]Datax写入数据到psql报不能序列化特殊字符
  • [C++][基础]1_变量、常量和基本类型
  • [C++][数据结构][算法]单链式结构的深拷贝
  • [CVPR2021]Birds of a Feather: Capturing Avian Shape Models from Images
  • [Effective C++读书笔记]0012_复制对象时勿忘其每一部分