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中的应用 方法的具体应用请查询文档

posted on 2012-03-12 11:41 吃螺丝 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/Kiros/archive/2012/03/12/2391529.html

ios sqlite3 初级应用相关推荐

  1. iOS从初级到精通就业-C语言入门-栾斌-专题视频课程

    iOS从初级到精通就业-C语言入门-7609人已学习 课程介绍         C语言基础入门,面向初级,毫无编程经验的学生群体,通过学习能够掌握C语言的基本语法,编程的基本概念,培养自己的编程思维! ...

  2. iOS从初级到精通就业 Objective-C-栾斌-专题视频课程

    iOS从初级到精通就业 Objective-C-7187人已学习 课程介绍         C语言基础入门,面向初级,毫无编程经验的学生群体,通过学习能够掌握C语言的基本语法,编程的基本概念,培养自己 ...

  3. iOS从初级到精通就业 UI基础-栾斌-专题视频课程

    iOS从初级到精通就业 UI基础-12502人已学习 课程介绍         本课程涵盖UIKit框架大多数基础常用控件的使用,以及页面跳转,页面传值,可视化编程等项目开发中常用技术. 课程收益   ...

  4. IOS sqlite3 使用简单介绍 使用简单介绍

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

  5. iOS SQLite3数据库操作

    iOS中数据持久化分为四种:属性列表.对象归档.SQLite3和Core Data,SQLite3数据库操作是一个必不或缺的技术. SQLite3简介 SQLite3数据库是移动端(iOS.Andro ...

  6. IOS教程 初级到高级项目实战

    JF21-渥瑞达IOS开发到实战教程 1-iPhone开发实战视频教程-Linux下C语言软件开发视频教程 2-iPhone开发实战视频教程-Objective-C软件开发 3-iPhone开发实战视 ...

  7. iOS —— SQLite3 功能使用详解 (三)

    SQLite3 功能 1.获取sqlite3的数据库文件路径 <span style="font-size:14px;">NSArray *paths = NSSear ...

  8. ios开发初级篇(上)

    ios开发已有大半年,今天也来总结一下关于ios基础的一些知识点,不过与其说总结,不如说学习,因为平常对于ios的学习都是断断续续的,基本上是碰到什么类型的问题,才去学习,寻找.现在也是查阅了一些资料 ...

  9. iOS开发初级错误 Expression is not assignable

    当我们想要修改CGSize,CGRect中的某个参数时我们会这样写:self.view.frame.size.height = 10.f; 编译器会报错:'Expression is not assi ...

最新文章

  1. java线程的异常无法捕获异常_Java如何从线程中捕获异常
  2. 人脸识别算法初次了解
  3. javascript高级程序设计第一章
  4. burpsuite https 社区版_微软推出Visual Studio 2019 RC版 正式版预计四月到来
  5. Nginx出现这么几个500怎么解决?
  6. SIP协议和压力测试, SIP callflow图形生成
  7. Yii框架里用grid.CGridView调用pager扩展不显示最后一页按钮的解决
  8. 与Min_25筛有关的一些模板
  9. python生成器用法_理解python中生成器用法
  10. 中国1,3丁二醇市场趋势报告、技术动态创新及市场预测
  11. IIS错误信息--另一个程序正在使用此文件,进程无法访问!
  12. vue-element日期框点击不显示,不刷新
  13. 50个技巧提高你的PHP网站程序执行效率
  14. automake搭建项目工程例子讲解
  15. uwsgi怎么启动停止
  16. kali入侵win7
  17. Android权限请求第三方库的比较
  18. 快排(基础详解入门)
  19. 百练1724ROADS
  20. 从一个简单的数学题来说说偷换概念引发的催眠效应

热门文章

  1. TextView设置缩略显示
  2. Mac OS X Terminal 101:终端使用初级教程以及Xcode
  3. python安装lxml,在windows环境下
  4. 《linux内核设计与实现》读书笔记第一、二章
  5. 【leetcode】ZigZag Conversion
  6. “四方定理”--蓝桥杯
  7. Asp.net 调用mysql存储过程参数传中文乱码!
  8. 诗歌rials 之RJS的tips
  9. 此时无足够的可用内存,无法满足操作的预期要求,可能是由于虚拟地址随便造成的。请稍候重试。 .
  10. 又双叒叕 - 中国汉字的奇妙