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操作--超简单--看我就够啦的更多相关文章

  1. IOS数据库操作SQLite3使用详解(转)

    iPhone中支持通过sqlite3来访问iPhone本地的数据库.具体使用方法如下1:添加开发包libsqlite3.0.dylib首先是设置项目文件,在项目中添加iPhone版的sqlite3的数 ...

  2. 超简单使用批处理(batch)操作数据库

    超简单使用批处理(batch)操作数据库 批处理(batch)是什么 批处理的执行就好比快递员的工作: 未使用批处理的时候,快递员一次从分发点将一件快递发给客户: 使用批处理,则是快递员将所有要派送的 ...

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

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

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

                   在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运 ...

  5. IOS异步和多线程操作&&在sqlite3中的应用

    1,数据库I/O操作(异步) 数据库本身是存储在磁盘上.访问和修改数据库,即对磁盘进行读写,即I/O操作. 磁盘属于计算机硬件,具有DMA能力,不需要CPU干预,可以实现异步操作. I/O操作一般是消 ...

  6. iOS 数据库操作(使用FMDB)

    iOS 数据库操作(使用FMDB)   iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.Plausibl ...

  7. IOS开发-封装数据库sqlite3之为何选择FMDB

    为什么使用第三方轻量级框架FMDB? FMDB是用于进行数据存储的第三方的框架,它与SQLite与Core Data相比较,存在很多优势. FMDB是面向对象的,它以OC的方式封装了SQLite的C语 ...

  8. ssh框架整合---- spring 4.0 + struts 2.3.16 + maven ss整合超简单实例

    一 . 需求 学了这么久的ssh,一直都是别人整合好的框架去写代码,自己实际动手时才发现框架配置真是很坑爹,一不小心就踏错,真是纸上得来终觉浅! 本文将记录整合struts + spring的过程 , ...

  9. python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用

    python操作三大主流数据库(12)python操作redis的api框架redis-py简单使用 redispy安装安装及简单使用:https://github.com/andymccurdy/r ...

随机推荐

  1. jdk各版本

    1.jdk1.7: 1.1二进制变量的表示,支持将整数类型用二进制来表示,用0b开头: 1.2  Switch语句支持string类型: 2.jdk1.8:

  2. Oracle 数据库字典 sys.col$ 表中关于type#的解释

    sys.col$ 表是oracle基础数据字典表中的列表,表中描述了数据库中各列信息,其中type#是列的数据类型.以下表格说明了各个数值的含义,以供参考. 值 说明 1 如果列 charsetfor ...

  3. 前端js动画收藏

    值得收藏的动画

  4. js动态创建类对象

    1.定义函数,函数中定义类对象 f1=function(){ //定义类 function Pannel(name){ this.name = name; this.print = function( ...

  5. thinkphp下判断状态值语法

    在thinkphp框架下我们经常会用到状态值的判断:但是这样写会引起语法错误. <div> <if condition="{$res.status} eq '0'" ...

  6. ubuntu 16.10安装nginx

    1 : cd /usr/local 2 : sudo wget http://nginx.org/download/nginx-1.2.8.tar.gz 3 : sudo tar -zxvf ngin ...

  7. java IO流实现删除文件夹以及文件夹中的内容

    这篇主要是对IO文件流对文件常用处理中的删除文件夹,平时我们直接删除文件夹既可以删除里面的全部内容. 但是java在实现删除时,只能是文件才会被删除. 所以这里需要定义一个方法,来递归调用方法(递归调 ...

  8. git之删除过滤

    把不想提交的内容删除过滤 git rm --cached **/** -f

  9. <Android 应用 之路> 百度地图API使用(2)

    简介 上一篇只是大致的提一下百度地图API的Android SDK的基本内容,然后抄袭一个官网上的Demo,今天看一下百度地图的第一部分,地图类型和基本的显示. 简单实战 不同类型地图的显示 //设置 ...

  10. 21.拉取&删除远程分支

    拉取 当 git fetch 命令从服务器上抓取本地没有的数据时,它并不会修改工作目录中的内容. 它只会获取数据然后让你自己合并. 然而,有一个命令叫作 git pull 在大多数情况下它的含义是一个 ...