ios sqlite3 初级应用
在ios中,持久化用好几种 方法,前面已经介绍了 两种 ,一个是简单的写入文件,另一个是加入了序列化并写入文件中,现在介绍 ios 中嵌入式数据库sqlite3的初级应用 当然在使用sqlite3之前 你需要将libsqlite3.dylib这个类库加入到你的项目中
//
- (NSString *)dataFilePath{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:kFilename];
}
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; //首先得到应用程序沙盒中Document文件夹的路径
return [documentsDirectory stringByAppendingPathComponent:kFilename]//返回你指定文件的路径
//
打开数据库
sqlite3 *database;
if (sqlite3_open([filePath UTF8String], &database)) {
sqlite3_close(database);
NSAssert(0,@"Failed to open database");
}
///
创建数据库
char *errorMsg;
NSString *createSQL = @"CREATE TABLE IF NOT EXISTS FIELDS (ROW INTEGER PRIMARY KEY,FIELD_DATA TEXT);";
if (sqlite3_exec(database, [createSQL UTF8String], NULL, NULL, &errorMsg)!=SQLITE_OK) {
sqlite3_close(database);
NSAssert1(0,@"Error creating table:%s",errorMsg);
}
/
查询
NSString *query = @"SELECT ROW, FIELD_DATA FROM FIELDS ORDER BY ROW";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil)==SQLITE_OK) {
while (sqlite3_step(statement)==SQLITE_ROW) {
int row = sqlite3_column_int(statement, 0);
char *rowData = (char *)sqlite3_column_text(statement, 1);
//NSString *fieldName = [[NSString alloc] initWithFormat:@"field&d",row];
//NSString *fieldValue = [[NSString alloc] initWithUTF8String:rowData];
//UITextField *field = [self valueForKey:fieldName];
//field.text = fieldValue;
//[fieldName release];
//[fieldValue release];
}
sqlite3_finalize(statement);
}
sqlite3_close(database);
插入 更新
sqlite3 *database;
if (sqlite3_open([[self dataFilePath] UTF8String], &database)) {
sqlite3_close(database);
NSAssert(0,@"Failed to open database");
}
for (int i=1; i<=4; i++) {
NSString *fieldName = [[NSString alloc] initWithFormat:@"field%d",i];
UITextField *field = [self valueForKey:fieldName];
[fieldName release];
char *errorMsg;
char *update = "INSERT OR REPLACE INTO FIELDS (ROW,FIELD_DATA) VALUES(?,?);"; //这里插入的值可以用nsstring替换,但是最好的做法是使用绑定,如果遇到特殊字符 这是不二选择
sqlite3_stmt *stmt;
if (sqlite3_prepare_v2(database, update, -1, &stmt, nil)==SQLITE_OK) {
sqlite3_bind_int(stmt, 1, i);
sqlite3_bind_text(stmt, 2, [[field text] UTF8String], -1, NULL);
}
if (sqlite3_step(stmt)!=SQLITE_DONE) {
NSAssert(0,@"Error updating table:%s",errorMsg);
}
sqlite3_finalize(stmt);
}
sqlite3_close(database);
这是最基础的sqlite3在ios中的应用 方法的具体应用请查询文档
转载于:https://www.cnblogs.com/Kiros/archive/2012/03/12/2391529.html
ios sqlite3 初级应用相关推荐
- iOS从初级到精通就业-C语言入门-栾斌-专题视频课程
iOS从初级到精通就业-C语言入门-7609人已学习 课程介绍 C语言基础入门,面向初级,毫无编程经验的学生群体,通过学习能够掌握C语言的基本语法,编程的基本概念,培养自己的编程思维! ...
- iOS从初级到精通就业 Objective-C-栾斌-专题视频课程
iOS从初级到精通就业 Objective-C-7187人已学习 课程介绍 C语言基础入门,面向初级,毫无编程经验的学生群体,通过学习能够掌握C语言的基本语法,编程的基本概念,培养自己 ...
- iOS从初级到精通就业 UI基础-栾斌-专题视频课程
iOS从初级到精通就业 UI基础-12502人已学习 课程介绍 本课程涵盖UIKit框架大多数基础常用控件的使用,以及页面跳转,页面传值,可视化编程等项目开发中常用技术. 课程收益 ...
- IOS sqlite3 使用简单介绍 使用简单介绍
iPhone中支持通过sqlite3来访问iPhone本地的数据库. 具体使用方法如下 1:添加开发包libsqlite3.0.dylib 首先是设置项目文件,在项目中添加iPhone版的sqlite ...
- iOS SQLite3数据库操作
iOS中数据持久化分为四种:属性列表.对象归档.SQLite3和Core Data,SQLite3数据库操作是一个必不或缺的技术. SQLite3简介 SQLite3数据库是移动端(iOS.Andro ...
- IOS教程 初级到高级项目实战
JF21-渥瑞达IOS开发到实战教程 1-iPhone开发实战视频教程-Linux下C语言软件开发视频教程 2-iPhone开发实战视频教程-Objective-C软件开发 3-iPhone开发实战视 ...
- iOS —— SQLite3 功能使用详解 (三)
SQLite3 功能 1.获取sqlite3的数据库文件路径 <span style="font-size:14px;">NSArray *paths = NSSear ...
- ios开发初级篇(上)
ios开发已有大半年,今天也来总结一下关于ios基础的一些知识点,不过与其说总结,不如说学习,因为平常对于ios的学习都是断断续续的,基本上是碰到什么类型的问题,才去学习,寻找.现在也是查阅了一些资料 ...
- iOS开发初级错误 Expression is not assignable
当我们想要修改CGSize,CGRect中的某个参数时我们会这样写:self.view.frame.size.height = 10.f; 编译器会报错:'Expression is not assi ...
最新文章
- java线程的异常无法捕获异常_Java如何从线程中捕获异常
- 人脸识别算法初次了解
- javascript高级程序设计第一章
- burpsuite https 社区版_微软推出Visual Studio 2019 RC版 正式版预计四月到来
- Nginx出现这么几个500怎么解决?
- SIP协议和压力测试, SIP callflow图形生成
- Yii框架里用grid.CGridView调用pager扩展不显示最后一页按钮的解决
- 与Min_25筛有关的一些模板
- python生成器用法_理解python中生成器用法
- 中国1,3丁二醇市场趋势报告、技术动态创新及市场预测
- IIS错误信息--另一个程序正在使用此文件,进程无法访问!
- vue-element日期框点击不显示,不刷新
- 50个技巧提高你的PHP网站程序执行效率
- automake搭建项目工程例子讲解
- uwsgi怎么启动停止
- kali入侵win7
- Android权限请求第三方库的比较
- 快排(基础详解入门)
- 百练1724ROADS
- 从一个简单的数学题来说说偷换概念引发的催眠效应