ios开发中如何使用sqlite数据库

首先,使用sqlite存储数据,需要添加libsqlite3.dylib 这个动态库,然后 添加动态库的主头文件 #import <sqlite3.h>

// db就是数据库的象征,如果要进行CRUD(增删改查),得操作db这个实例
@property (nonatomic, assign) sqlite3 *db;

第一步: 打开数据库。 当系统第一次用到数据库时, 我们先创建一个数据库文件,并创建表,就在这一步。

// 获得数据库文件的路径,即沙盒
NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *filename = [doc stringByAppendingPathComponent:@"students.sqlite"];
// 将OC字符串 转成 C语言字符串
const char *cfilename = filename.UTF8String;
// 1.打开数据库(如果数据库文件不存在,sqlite3_open函数会自动创建数据库文件)
int result = sqlite3_open(cfilename, &_db);    // 这个open方法 就是打开数据库,传一个c语言的字符串和 db
if (result == SQLITE_OK) { // 打开成功
  NSLog(@"成功打开数据库");

// 2.创表
const char *sql = "CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer NOT NULL);";
  char *erroMsg = NULL;
  result = sqlite3_exec(self.db, sql, NULL, NULL, &erroMsg);
if (result == SQLITE_OK) {
  NSLog(@"成功创表");
} else {

  NSLog(@"创表失败--%s--%@-%d", erroMsg, [NSString stringWithUTF8String:__FILE__], __LINE__);  //这个可以知道 错误在哪个文件的 第几行
}
} else {
  NSLog(@"打开数据库失败");
}

第二部 : 插入/添加数据

下面以插入/添加 20条数据为例:

for (int i = 0; i<20; i++) {
// 1.拼接SQL语句
  NSString *name = [NSString stringWithFormat:@"Jack-%d", arc4random_uniform(100)];
  int age = arc4random_uniform(20) + 30;
  NSString *sql = [NSString stringWithFormat:@"INSERT INTO t_student (name, age) VALUES (‘%@‘, %d);", name, age];   // 看清该方法INSERT INTO

// 2.执行SQL语句
  char *erroMsg = NULL;
  sqlite3_exec(self.db, sql.UTF8String, NULL, NULL, &erroMsg);  //该sqlite方法就是 插入数据库数据
  if (erroMsg) {  //如果有错误
  NSLog(@"插入数据失败--%s", erroMsg);
  } else {
  NSLog(@"成功插入数据");
  }
}

删除数据 和插入数据 一样,只需更换一下 sql语句。

查询数据:

const char *sql = "SELECT id, name, age FROM t_student WHERE age <= 30;";  //sql语句,查询条件
// 进行查询前的准备工作
// -1 代表系统会自动计算SQL语句的长度
// sqlite3_stmt:用来取数据

sqlite3_stmt *stmt = NULL;
if (sqlite3_prepare_v2(self.db, sql, -1, &stmt, NULL) == SQLITE_OK) { // SQL语句没有问题
NSLog(@"查询语句没有问题");

// 每调一次sqlite3_step函数,stmt就会指向下一条记录
  while (sqlite3_step(stmt) == SQLITE_ROW) { // 找到一条记录
// 取出数据

// 取出第0列字段的值(int类型的值)
  int ID = sqlite3_column_int(stmt, 0);

// 取出第1列字段的值(tex类型的值)
  const unsigned char *name = sqlite3_column_text(stmt, 1);

// 取出第2列字段的值(int类型的值)
  int age = sqlite3_column_int(stmt, 2);

  NSLog(@"%d %s %d", ID, name, age);
}
} else {
  NSLog(@"查询语句有问题");
}

时间: 2024-08-05 18:08:27

ios开发中如何使用sqlite数据库的相关文章

ios开发中iphone模拟器中程序文件和数据库的存放位置

1.使用命令: chflags nohidden ~/library/ 使隐藏的资源库文件夹显示出来.如果想要隐藏掉,使用:chflags hidden ~/library/ 2.finder中找到:用户->mwsn(这是我的用户名)->资源库->Application Support->iPhone Simulator->7.0(根据你的版本确定是哪个)->Applications 里面有一堆目录,挨个查看,找到你需要的工程的目录->Documents文件夹,你

ios开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】

               在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运用: 在本节,将通过对4个文本框内容的创建.修改,退出后台,再重新回到后台,来认识这两种持久化数据的方式.效果图如下[图1]: [图1 GUI界面效果图] [本次开发环境: Xcode:7.2     iOS Simulator:iphone6S plus   By:啊左]     一.数据库SQL

Windows Phone8 中如何引用 SQLite 数据库

SQLite数据库介绍 1.SQLite是一款轻型的嵌入式数据库,使用C++开发,使用非常广泛 2.SQLite是一款跨平台的数据库,支持Windows.Linux.Android.IOS.Windows Phone行装系统 3.在Windows Phone中的SQLite是一个非托管组件 4.可以在Windows运行时中使用,也可以在C#项目中使用 5.在C#项目中需要通过Windows运行时组件来访问 下面介绍如何在wp中使用SQLite开发应用程序 1.首先我们来下载数据库工具安装包,地址

iOS开发之用代码实现数据库FMDB的操作

iOS开发之用代码实现数据库FMDB的操作 1.简介 需求作用: 如果需要保存大量的结构较为复杂的数据时候, 使用数据库, 例如交规考试项目 常用的数据库: (1)Microsoft SQL Server 2000/2008, 中小企业使用较多 (2)Oracle 比较复杂, 大企业使用较多 (3)Mysql数据库, 网站使用较多 (4)sqlite: 本地数据库, 访问数据足够快, 直接访问文件 足够简单, 功能相对其他数据库软件不是特别齐全, 足够用了  足够小, 系统不超过1M, 适合在移

iOS开发中存储数据的方法

最近被问到一些关于iOS开发中对于数据存储的处理方式,感觉数据存储这个也是经常用到的一个功能的,有必要自己去整理和记录一下的. iOS开发中一般是有四种存储数据的方式,分别是: 1.NSUserDefaults:用来保存用户自己设置的一些属性,用户再次打开程序,或者开机后,这些信息还是存在,NSUserDefaults可以存储的类型包括NSString,NSData,NSNumber,NSDictionary,NSArray.如果要存储其他的数据类型,则需要转化为前面的一些类型,NSUSerDe

iOS开发中常用的几种设计模式

下面是iOS开发中比较常用的几种设计模式.详情如下所示: (一)代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现.优势:解耦合敏捷原则:开放-封闭原则实例:tableview的 数据源delegate,通过和protocol的配合,完成委托诉求.列表row个数delegate自定义的delegate (二)观察者模式应用场景:一般为model层对,controller和view进行的通知方式,不关心谁去接收,只负责发布信息.优势:解耦合敏捷原则:接口隔离原

iOS开发中常用的参数传递方法

在iOS开发中常用的参数传递有以下几种方法: 采用代理模式 采用iOS消息机制 通过NSDefault存储(或者文件.数据库存储等) 通过AppDelegate定义全局变量(或者使用UIApplication.定义一个单例类等) 通过控制器属性传递 使用代理方式传递参数的步骤如下: 1.定义协议,协议中定义好传参时所需要的方法 2.目标视图控制器定义一个代理对象 3.源视图控制器实现协议并在初始化目标控制器时指定目标控制器的代理为其自身 4.需要传参的时候在目标窗口调用代理的协议方法

ios开发中遇到的问题和解答汇总

如何让一个数组中的字典,如果字典中有重复的id.将重复的id的字典进行数组整合....<点击查看详情>iOS UIView 创建是不是都会经过initWithFrame?<点击查看详情>iPad 9.1系统上键盘响应很慢<点击查看详情>ios如何绑定数据?<点击查看详情>iOS开发,我想上传一个.gsd的文件(或者stl),请问该怎么做<点击查看详情>iOS NSTimer问题<点击查看详情>iOS大部分积分墙软件为啥都做基于Safa

嵌入式linux 项目开发(一)——SQLite数据库

嵌入式linux 项目开发(一)--SQLite数据库 一.SQLite数据库简介 SQLite是一个开源的嵌入式关系数据库,是一种轻量级的.自给自足的.无服务器的.无需配置的.事务性的SQL数据库引擎,其特点是高度便携.使用方便.结构紧凑.高效.可靠,体积小,支持 ACID(原子性.一致性.独立性及持久性Atomicity.Consistency.Isolation.Durability)事物. SQLite官网:http://www.sqlite.org/ SQLite数据库采用模块化设计,