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);
最新文章
- 第一章 Part 2/2 Git 一览
- MySQL 查看表结构简单命令
- POJ2406Power Strings[KMP 失配函数]
- PHP Official Service
- cookie函数
- word 排版问题
- JXSE and Equinox Tutorial, Part 1
- pxe+kickstart实现无人值守批量安装linux
- 输入一个字符串,去掉重复的字符,并按ASCII值排序-华为机试
- 中文乱码?不,是 HTML 实体编码!(转)
- iOS 文件下载和打开
- 文章标题 Oracle数据库中dual表使用
- react native中一次错误排查 Error:Error: Duplicate resources
- SystemUI中监听app启动,修改app中的状态栏背景色
- python 文件指针及文件覆盖
- how to tell gcc with c99 enable
- System.ServiceProcess与System.Configuration.Install命名空间的介绍
- Building and using plug-ins for Android
- 使用clear来清除localStorage保存对象的全部数据
- django学习--2 模板
热门文章
- openlayers 4快速渲染管网模型数据
- [android] 实现返回键操作思路
- canal —— 阿里巴巴mysql数据库binlog的增量订阅&;消费组件
- spring 代理
- ASP.NET 后台验证 TextBox 值是否为数字
- asp.net core 错误定位 &; vs2017 远程调试部署在centos上的asp.net core程序
- Docker 简单运用
- 转:hive-列转行和行转列
- 139.00.009提高Github Clone速度
- Openstack实践(1)部署使用实例及neutron网络