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);



最新文章

  1. 第一章 Part 2/2 Git 一览
  2. MySQL 查看表结构简单命令
  3. POJ2406Power Strings[KMP 失配函数]
  4. PHP Official Service
  5. cookie函数
  6. word 排版问题
  7. JXSE and Equinox Tutorial, Part 1
  8. pxe+kickstart实现无人值守批量安装linux
  9. 输入一个字符串,去掉重复的字符,并按ASCII值排序-华为机试
  10. 中文乱码?不,是 HTML 实体编码!(转)
  11. iOS 文件下载和打开
  12. 文章标题 Oracle数据库中dual表使用
  13. react native中一次错误排查 Error:Error: Duplicate resources
  14. SystemUI中监听app启动,修改app中的状态栏背景色
  15. python 文件指针及文件覆盖
  16. how to tell gcc with c99 enable
  17. System.ServiceProcess与System.Configuration.Install命名空间的介绍
  18. Building and using plug-ins for Android
  19. 使用clear来清除localStorage保存对象的全部数据
  20. django学习--2 模板

热门文章

  1. openlayers 4快速渲染管网模型数据
  2. [android] 实现返回键操作思路
  3. canal —— 阿里巴巴mysql数据库binlog的增量订阅&amp;消费组件
  4. spring 代理
  5. ASP.NET 后台验证 TextBox 值是否为数字
  6. asp.net core 错误定位 &amp; vs2017 远程调试部署在centos上的asp.net core程序
  7. Docker 简单运用
  8. 转:hive-列转行和行转列
  9. 139.00.009提高Github Clone速度
  10. Openstack实践(1)部署使用实例及neutron网络