iOS 数据库sqlite3.0操作--超简单--看我就够啦
iOS客户端数据存储的方式有很多,下面主要是介绍苹果自带的sqlite3.0的使用方法。
首先导入sqlite3.0的框架。然后导入头文件#import <sqlite3.h>就行了
下面介绍怎么使用。直接上代码吧...
// 1: 设置数据库文件路径
NSString *dataBaseFilePath = [NSHomeDirectory() stringByAppendingPathComponent:@"MyFile"];
// 创建数据库 句柄
sqlite3 *db;
char *error;
// 2: 打开数据库。数据文件不存在时,自动创建文件
if (sqlite3_open([dataBaseFilePath UTF8String], &db) == SQLITE_OK) {
NSLog(@"数据库打开成功");
}
else {
NSLog(@"数据库打开失败");
// 3: 创建数据库表
NSString *createSql = @"create table if not exists myTable(id integer primary key autoincrement, name text, age integer, address text)";
if (sqlite3_exec(db, [createSql UTF8String], NULL, NULL, &error) == SQLITE_OK) {
NSLog(@"表创建成功");
} else {
NSLog(@"表创建失败: %s", error);
// 每次使用完毕清空 error 字符串,提供给下一次使用
sqlite3_free(error);
}
}
// 插入数据
NSString *insertSql = @"insert into myTable(name, age, address) values('小新', '8', '东城区')";
if (sqlite3_exec(db, [insertSql UTF8String], NULL, NULL, &error) == SQLITE_OK) {
NSLog(@"插入成功.");
} else {
NSLog(@"插入失败: %s", error);
// 每次使用完毕清空 error 字符串,提供给下一次使用
sqlite3_free(error);
}
// 修改记录
NSString *updateSql = @"update myTable set name = '小白', age = '10', address = '西城区' where id = 2";
if (sqlite3_exec(db, [updateSql UTF8String], NULL, NULL, &error) == SQLITE_OK) {
NSLog(@"修改成功.");
} else {
NSLog(@"修改失败: %s", error);
// 每次使用完毕清空 error 字符串,提供给下一次使用
sqlite3_free(error);
}
// 删除记录
NSString *deleteSql = @"delete from myTable where id = 3";
if (sqlite3_exec(db, [deleteSql UTF8String], NULL, NULL, &error) == SQLITE_OK) {
NSLog(@"删除成功");
} else {
NSLog(@"删除失败: %s", error);
// 每次使用完毕清空 error 字符串,提供给下一次使用
sqlite3_free(error);
}
// 查询记录
sqlite3_stmt *statement;
// @"select * from myTable" 查询所有 key 值内容
NSString *selectSql = @"select id, name, age, address from myTable";
if (sqlite3_prepare_v2(db, [selectSql UTF8String], -1, &statement, nil) == SQLITE_OK) {
while(sqlite3_step(statement) == SQLITE_ROW) {
// 查询 id 的值
int _id = sqlite3_column_int(statement, 0);
// 查询 name 的值
NSString *name = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 1)];
// 查询 age
int age = sqlite3_column_int(statement, 2);
// 查询 address 的值
NSString *address = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 3)];
NSLog(@"id: %i, name: %@, age: %i, address: %@", _id, name, age, address);
}
} else {
NSLog(@"查询失败.");
}
sqlite3_finalize(statement);
// 数据库关闭
sqlite3_close(db);
iOS 数据库sqlite3.0操作--超简单--看我就够啦的更多相关文章
- IOS数据库操作SQLite3使用详解(转)
iPhone中支持通过sqlite3来访问iPhone本地的数据库.具体使用方法如下1:添加开发包libsqlite3.0.dylib首先是设置项目文件,在项目中添加iPhone版的sqlite3的数 ...
- 超简单使用批处理(batch)操作数据库
超简单使用批处理(batch)操作数据库 批处理(batch)是什么 批处理的执行就好比快递员的工作: 未使用批处理的时候,快递员一次从分发点将一件快递发给客户: 使用批处理,则是快递员将所有要派送的 ...
- 使用iOS原生sqlite3框架对sqlite数据库进行操作
摘要: iOS中sqlite3框架可以很好的对sqlite数据库进行支持,通过面向对象的封装,可以更易于开发者使用. 使用iOS原生sqlite3框架对sqlite数据库进行操作 一.引言 sqlit ...
- iOS开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】
在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运 ...
- IOS异步和多线程操作&&在sqlite3中的应用
1,数据库I/O操作(异步) 数据库本身是存储在磁盘上.访问和修改数据库,即对磁盘进行读写,即I/O操作. 磁盘属于计算机硬件,具有DMA能力,不需要CPU干预,可以实现异步操作. I/O操作一般是消 ...
- iOS 数据库操作(使用FMDB)
iOS 数据库操作(使用FMDB) iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.Plausibl ...
- IOS开发-封装数据库sqlite3之为何选择FMDB
为什么使用第三方轻量级框架FMDB? FMDB是用于进行数据存储的第三方的框架,它与SQLite与Core Data相比较,存在很多优势. FMDB是面向对象的,它以OC的方式封装了SQLite的C语 ...
- ssh框架整合---- spring 4.0 + struts 2.3.16 + maven ss整合超简单实例
一 . 需求 学了这么久的ssh,一直都是别人整合好的框架去写代码,自己实际动手时才发现框架配置真是很坑爹,一不小心就踏错,真是纸上得来终觉浅! 本文将记录整合struts + spring的过程 , ...
- python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用
python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用 redispy安装安装及简单使用:https://github.com/andymccurdy/r ...
随机推荐
- mybatis学习之高级映射
一对一映射查询 1.数据库执行脚本: /* SQLyog Ultimate v12.09 (64 bit) MySQL - 5.7.11-log : Database - db_mybatis *** ...
- 2017年11月20日 WinForm窗体 窗口无边框可移动&&窗口阴影 控制窗口关闭/最小化
弹框 MessageBox.Show(); 清空 clear() 字符串拼接 string 公共控件 button 按钮 checkbox 复选框 checklistbox 多个复选框 combobo ...
- docker 容器启动并自启动redis
centos7.5 背景:每次开机后都要自动启动redis,也就是宿主机开机,启动容器,然后启动redis 按照网上的做法是:修改redis.conf ,修改redis的启动脚本(utils/...s ...
- @media print样式 关于table断页
<html> <head> <style> @media print { table { page-break-after:auto } tr { page-bre ...
- git基本命令集合
以下内容不适合初学者 括号中表示需要自己填写 v1.0 git add git commit -m git commit -a -m git commit -amend git clone git l ...
- Maven 配置tomcat和findbug插件(在eclipse建立的项目中)
tomcat插件 a) tomcat的maven插件可以在tomcat的官网上寻找,这就是tomcat插件的plugin b) 将tomcat的plugin配置到项目的po ...
- laravel验证码
登录验证码 1.首先,进入https://github.com/mewebstudio/captcha,根据captcha上的使用方法一步步来实现验证码的安装,因为是laravel5.7,所以选择了c ...
- js原生带缩略图的图片切换效果
js原生带缩略图的图片切换效果 本例中用到的 moveElement(elementID,final_x,final_y,interval)是来自<JavaScript DOM编程艺术(中文第二 ...
- 11.5NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 40 + 30 = 170\) 实际得分:\(100 +100 + 50 = 250\) 辣鸡数据毁我青春 T1一眼不会做感觉要凉 T2好像一波折半搜索就做完了 T ...
- IntelliJ IDEA开发工具println报错的解决方法
IntelliJ IDEA 编译 JSP,出现 out.println 报错,下图所示: 报错原因:println报红,这是因为没有关联好服务器! 解决方案:点击File->Project st ...