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. puppet_list

  2. svn2git使用小记

    Github强烈推荐使用svn2git工具将svn repository转成git repository: https://help.github.com/articles/importing-fro ...

  3. WinDbug抓取进程dump

    安装WinDbug(包含在 Windows Kits-debugger 中)后,运行如下命令将会在 explorer.exe进程发生崩溃后抓取相应的内存数据到D盘根目录下的一个文件夹中 adplus. ...

  4. windows下载安装MariaDB5.5.32 绿色版

    1.下载地址: http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/mariadb-5.5.32/win32-packages/mariadb-5.5.32 ...

  5. MVC - Ajax

    Ajax表单 使用Ajax.BeginForm方法即可开启Ajax表单 Ajax.BeginForm() 参数1:Action名参数2:使用AjaxOptions实例设定异步请求的属性 new Aja ...

  6. 从源码角度深入分析log4j配置文件使用

    log4j在日常开发中经常使用,但有时候对 配置文件应该放到什么位置有疑惑.现在我们通过从代码的角度来看待这个问题, 看完后你也许会恍然大悟哦. 开始吧. Log4j的组成及架构: Log4j由三个重 ...

  7. 一个卡片式的ViewPager,带你玩转ViewPager的PageTransformer属性!

    ViewPager的基本用法不必多说,这都很简单,我们可以在ViewPager中加载一个ImageView,也可以加载一个Fragment,这都是目前非常常见的用法.那么我今天说的是ViewPager ...

  8. iOS之UIview动画

    一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持 执行动画所需要的工作由UIView类自动完成, ...

  9. xilinx仿真库的作用(原创)

    ① secureip库:硬核(HARD IP)仿真(功能仿真和时序仿真)模型(hard IP simulation model),比如PowerPC.PCIE.SRIO.DDR等.Simulation ...

  10. Objective-c中autorelease的释放时机

    如果你使用过MRR,autorelease这个关键字应该是太熟悉了,每次在我们生成一个新的对象返回时,都需要向这个对象发送autorelease消息,目的是为了延时释放创建的对象.那到底是在什么时候, ...