1 项目导入 libsqlite3.0.dylib 框架

2 在使用数据sqlite的头文件(.h)上导入 #Impourt <sqlite3.h>

3 推荐自己本地电脑下个sqlite Manager 管理软件类似的

下面上代码

//
// ViewController.m
// SQLiteDemo
//
// Created by wangtouwang on 15/4/9.
// Copyright (c) 2015年 wangtouwang. All rights reserved.
// #import "ViewController.h"
#import "WPUser.h" #define DBNAME @ "mysqlite.sqlite" @interface ViewController ()
{
sqlite3 *db;
}
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; [self createSqlDBOrOpenDB]; [self createTable]; // for (int index=0; index<30; index++) {
// [self insertIntoData];
// } [self updateData:[self searchAllData]]; } #pragma mark 更新数据
-(void)updateData:(NSMutableArray *)array{
NSString *sql = @"update user set name=?,age=? where id=?";
sqlite3_stmt *stmt;
for (int index=; index<array.count; index++) {
WPUser *user = (WPUser *)array[index];
user.name=@"张建华";
user.age=;
if (sqlite3_prepare_v2(db, [sql UTF8String], -, &stmt, NULL)==SQLITE_OK) {
sqlite3_bind_text(stmt, , [user.name UTF8String], -, NULL);
sqlite3_bind_int(stmt, , user.age);
sqlite3_bind_int(stmt, , user.ID);
if (sqlite3_step(stmt)==SQLITE_DONE) {
NSLog(@"更新成功");
}
}
}
} #pragma mark 读取数据
-(NSMutableArray *)searchAllData{
NSMutableArray *array = [NSMutableArray array];
NSString *sql = @"select id,name,age from user";
sqlite3_stmt *stmt;
if (sqlite3_prepare_v2(db, [sql UTF8String], -, &stmt, NULL)==SQLITE_OK) {
while (sqlite3_step(stmt)==SQLITE_ROW) {
NSInteger ID = sqlite3_column_int(stmt, );
char *name = (char*)sqlite3_column_text(stmt, );
NSString *uname = [[NSString alloc] initWithUTF8String:name];
NSInteger age = sqlite3_column_int(stmt, );
NSLog(@"ID=%lu NAME=%s AGE=%lu",ID,name,age);
WPUser *user = [WPUser initUserName:uname Age:age];
user.ID=ID;
[array addObject:user];
}
}
sqlite3_close(db);
return array;
} #pragma mark 新增数据
-(void)insertIntoData{
NSString *sql = @"insert into user(name,age) values(?,?)";
WPUser *user = [WPUser initUserName:@"JACK" Age:];
sqlite3_stmt *stmt;
//插入数据前检测语法是否正确
if ((sqlite3_prepare_v2(db, [sql UTF8String], -, &stmt, NULL))==SQLITE_OK ) {
//绑定参数 参数2:为序号(从1开始),参数3:为字符串值,参数4 为字符串长度。sqlite3_bind_text的第五个参数为一个函数指针
sqlite3_bind_text(stmt, , [user.name UTF8String], -, NULL);
sqlite3_bind_int(stmt, ,user.age);
//真正执行插入 sqlite3_step
if (sqlite3_step(stmt)==SQLITE_DONE) {
NSLog(@"INSERT INTO SUCCESS");
}else{
NSLog(@"INSERT INTO ERROR");
}
}
} #pragma mark 创建表
-(void)createTable{
NSString *sql = @"create table if not exists user (id integer primary key autoincrement,name text,age integer);";
char *errormsg;
//执行创建语句 sqlite3_exex 是函数 参数一:数据库的句柄(db),参数二: 为sql语句,参数三 回调参数,是一个指向函数的指针,如果把callback前面的*改成^则就是一个block代码段,
//参数四 可以写NULL,第五个参数为错误信息
//在这里创建需要先判断表是否已存在
int result = sqlite3_exec(db, [sql UTF8String], NULL, NULL, &errormsg);
if (result==SQLITE_OK) {
NSLog(@"创建成功");
}else{
NSLog(@"创建失败 愿因是:%s",errormsg);
}
} #pragma mark 创建数据库实例或者打开数据实例
-(void)createSqlDBOrOpenDB{
//获取 项目 Doucment文件目录地址
NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSLog(@"%@",doc);
//创建 SQLITE 文件或者获取该文件路径
NSString *DB_PATH = [doc stringByAppendingPathComponent:DBNAME];
NSLog(@"%@",DB_PATH);
//打开或者创建DB实例 这里用到C里面的语法和指针
int result = sqlite3_open([DB_PATH UTF8String], &db);//sqlite3_open方法名 参数 const filename DB文件路径,第二个参数就是数据库实例化对象 返回参数 int 类型
if(result!=SQLITE_OK){
sqlite3_close(db);//关闭实例化
NSLog(@"打开数据哭实例化对象失败");
}else{
NSLog(@"CREATE SUCCESS");
}
} @end
//
// WPUser.m
// SQLiteDemo
//
// Created by wangtouwang on 15/4/9.
// Copyright (c) 2015年 wangtouwang. All rights reserved.
// #import "WPUser.h" @implementation WPUser -(instancetype)initUserName:(NSString *)name Age:(NSInteger)age{
if (self= [super init]) {
self.name = name;
self.age = age;
}
return self;
} +(instancetype)initUserName:(NSString *)name Age:(NSInteger)age{
return [[WPUser alloc] initUserName:name Age:age];
} @end

IOS 学习笔记 2015-04-09 0C-SQLite 数据存储的更多相关文章

  1. IOS学习笔记之获取Plist文件读取数据

    @property(nonatomic,strong) NSArray *pic; //创建数组属性 @property(nonatomic,assign) int index; //创建索引属性 @ ...

  2. iOS学习笔记16-数据库SQLite

    一.数据库 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等.离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式: 归档:NSKeyedArchiver 偏好设置:NSU ...

  3. IOS学习笔记25—HTTP操作之ASIHTTPRequest

    IOS学习笔记25—HTTP操作之ASIHTTPRequest 分类: iOS2012-08-12 10:04 7734人阅读 评论(3) 收藏 举报 iosios5网络wrapper框架新浪微博 A ...

  4. iOS学习笔记17-FMDB

    上一节我已经介绍了SQLite的简单使用,不了解的可以提前去看一下iOS学习笔记16-数据库SQLite,这节我们来讲下FMDB. 一.FMDB介绍 FMDB是一种第三方的开源库,FMDB就是对SQL ...

  5. iOS学习笔记17-FMDB你好!

    上一节我已经介绍了SQLite的简单使用,不了解的可以提前去看一下iOS学习笔记16-数据库SQLite,这节我们来讲下FMDB. 一.FMDB介绍 FMDB是一种第三方的开源库,FMDB就是对SQL ...

  6. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  7. iOS学习笔记——AutoLayout的约束

    iOS学习笔记——AutoLayout约束 之前在开发iOS app时一直以为苹果的布局是绝对布局,在IB中拖拉控件运行或者直接使用代码去调整控件都会发上一些不尽人意的结果,后来发现iOS在引入了Au ...

  8. IOS学习笔记之关键词@dynamic

    IOS学习笔记之关键词@dynamic @dynamic这个关键词,通常是用不到的. 它与@synthesize的区别在于: 使用@synthesize编译器会确实的产生getter和setter方法 ...

  9. iOS学习笔记-精华整理

    iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...

  10. iOS学习笔记10-UIView动画

    上次学习了iOS学习笔记09-核心动画CoreAnimation,这次继续学习动画,上次使用的CoreAnimation很多人感觉使用起来很繁琐,有没有更加方便的动画效果实现呢?答案是有的,那就是UI ...

随机推荐

  1. 【三支火把】---队列和栈的C程序实现

    这几天总结了C语言的队列,栈的实现方法,在此总结一下:一.栈 首先从栈开始,诚然,相信学习过数据结构的你,肯定应该知道栈是什么东西了,如果不知道也没事每一句话我就可以帮你总结--数据只在栈顶进行插入和 ...

  2. mac jdbc连接mysql

    1.下载jdbc驱动: http://dev.mysql.com/downloads/connector/j/ 2.增加jdbc的jar包至项目的libs文件夹并build path 2.改动环境变量 ...

  3. UVA 10714 Ants 蚂蚁 贪心+模拟 水题

    题意:蚂蚁在木棍上爬,速度1cm/s,给出木棍长度和每只蚂蚁的位置,问蚂蚁全部下木棍的最长时间和最短时间. 模拟一下,发现其实灰常水的贪心... 不能直接求最大和最小的= =.只要求出每只蚂蚁都走长路 ...

  4. 解决Visual Studio 2010新建工程时出现『1>LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt』错误

      VS2010在经历一些更新后,建立Win32 Console Project时会出"error LNK1123" 错误. 解决方案为: 第一步:将:项目|项目属性|配置属性|清 ...

  5. Ubuntu11.04上tftp服务的配置

    Ubuntu11.04上tftp服务的配置 2011-06-17 15:01 以前ubuntu版本上的tftp已经配置很多遍了,详情可以参见:www.mcuos.com/thread-646-1-2. ...

  6. Markdown 添加 Latex 数学公式

    添加公式的方法 Latex 数学公式语法 添加公式的方法 行内公式 $行内公式$ 行间公式 $$行间公式$$ Latex 数学公式语法 角标(上下标) 上标命令^{} 下标命令_{} 上下标命令用来放 ...

  7. Flume简介与使用(一)——Flume安装与配置

    Flume简介与使用(一)——Flume安装与配置 Flume简介 Flume是一个分布式的.可靠的.实用的服务——从不同的数据源高效的采集.整合.移动海量数据. 分布式:可以多台机器同时运行采集数据 ...

  8. Linux Bash终端快捷键小结

    Ctrl + A  定位至行首 Ctrl + E  定位至行尾 Ctrl + U  向前删除至行首 Ctrl + K  向后删除至行尾 Ctrl + L  清屏

  9. RPC框架之Thrift

    目前流行的服务调用方式有很多种,例如基于SOAP消息格式的 Web Service,基于 JSON 消息格式的 RESTful 服务等.其中所用到的数据传输方式包括 XML,JSON 等,然而 XML ...

  10. 简单的实现QQ通信功能(三)

    第三部分:登陆界面的设计及代码 一:效果图及界面设计 1. 效果图: 2. 界面设计: (1)仿照QQ的登陆界面,右上角放了三个Label,用来做关闭.最小化和设置,使用了它们的Click事件当做按钮 ...