标签:
需求作用: 如果需要保存大量的结构较为复杂的数据时候, 使用数据库, 例如交规考试项目
常用的数据库:
(1)Microsoft SQL Server 2000/2008, 中小企业使用较多
(2)Oracle 比较复杂, 大企业使用较多
(3)Mysql数据库, 网站使用较多
(4)sqlite: 本地数据库, 访问数据足够快, 直接访问文件
足够简单, 功能相对其他数据库软件不是特别齐全, 足够用了
足够小, 系统不超过1M, 适合在移动端上使用
实例: 使用数据存储存储一个班上学生的信息
学号sid 用户名username 密码password 成绩score
1501 zhangsan 123 100
1502 lilei 321 90
1503 wangwu 222 80
(1)创建数据库
(2)创建数据表
(3)设计数据表(添加多个字段/列)
(4)数据库常用操作
增,删,改,查
SQL, Structure Query Language, 结构化查询语言, 作用就是操作数据库(创建表, 数据增删改查)
(1)创建数据表
create table if not exists StudentInfo(sid integer, username varchar(20), password varchar(20), score varchar(20))
(2)插入数据
insert into StudentInfo(sid,username,password,score) values(1501,‘zhangsan‘,‘211‘,‘80‘)
(3)查询数据
<1>查询表格中所有数据
select * from StudentInfo;
<2>查询指定的字段
实例: 查询所有名字username
select username from StudentInfo
<3>根据指定的条件进行查询
实例: 查找name为zhansan的所有信息
select * from StudentInfo where username=‘zhangsan‘
<4>根据多个条件进行查询
实例: 查找username为zhansan, 并且password为123的所有信息
select * from StudentInfo where username=‘zhangsan‘ and password=‘123‘
<5>查询后需要排序
a.根据score升序排列
select * from StudentInfo order by score
b.根据score降序
排序
select * from StudentInfo order by score desc
<6>获取数据行数
select count(*) from StudentInfo
(4)修改数据
update StudentInfo set score=‘100‘ where username=‘zhangsan‘;
(5)删除数据
delete from StudentInfo where sid=‘1503‘
配置
导入FMDB文件,
添加二进制库 libsqlite3.dylib,
包含头文件#import "FMDatabase.h"
#import "ViewController.h" #import "FMDatabase.h" @interface ViewController (){ //创建数据库对象 FMDatabase *_database; } @end
//1.创建数据库 -(void)createAndInitDatabase { //设置路径 NSString *path=[NSString stringWithFormat:@"%@/Documents/stuInfo.sqlite",NSHomeDirectory()]; //创建数据库(如果不存在则创建打开,如果存在则直接打开) _database=[[FMDatabase alloc] initWithPath:path]; if (!_database.open) { NSLog(@"打开失败"); return; } NSLog(@"打开成功"); }
//2.创建数据表 -(void)createTable { NSString *sql=@"create table if not exists StudentInfo(sid integer," "username varchar(20)," "password varchar(20)," "score varchar(20))"; //executeQuery用来执行select语句 //其他语句使用executeUpdate BOOL b=[_database executeUpdate:sql]; NSLog(@"----b=%d",b); }
//3.插入数据 -(void)insertData { int sid=1502; NSString *username=@"lisi"; NSString *password=@"231"; NSString *score=@"90"; NSString *sql=@"insert into StudentInfo(sid,username,password,score) values(?,?,?,?)"; //注意:?对应的每一个参数都应该是字符串,其他类型转化为字符串 BOOL b=[_database executeUpdate:sql,[NSString stringWithFormat:@"%d",sid],username,password,score ]; NSLog(@"=======b=%d",b); }
//4.查询数据 -(void)queryData { //显示所有人得信息 NSString *sql=@"select * from StudentInfo"; //FMResultSet 表示查询后结果集 FMResultSet *resultSet=[_database executeQuery:sql]; //next方法每次获取一条记录,获取不到的返回nil while ([resultSet next]) { NSLog(@"sid = %@,name =%@,pass =%@,score =%@",[resultSet stringForColumn:@"sid"],[resultSet stringForColumn:@"username"],[resultSet stringForColumn:@"password"],[resultSet stringForColumn:@"score"]); } }
//5.修改数据 -(void)setData { NSString *username=@"lisi"; NSString *score=@"70"; NSString *sql=@"update StudentInfo set score=‘60‘ where username=‘lisi‘;"; BOOL b=[_database executeUpdate:sql,username,score ]; NSLog(@"++++++b=%d",b); }
//6.删除数据 -(void)deleteData { NSString *sid=@"1501"; NSString *sql=@"delete from StudentInfo where sid=‘1501‘"; BOOL b=[_database executeUpdate:sql,sid]; NSLog(@"*******b=%d",b); }
1.首先导入FMDB文件和data.sqlite
2.添加二进制库 libsqlite3.dylib,包含头文件#import "FMDatabase.h"
3.创建一个FirstLevelModel模型,在FirstLevelModel.h里面自己定义属性,导入单例
#import <Foundation/Foundation.h> #import "FirstLevelModel.h" @interface DatabaseManager : NSObject //获取单例对象 +(id)sharedInstance; //获取第一级目录 -(NSArray *)firstLevels;
#import "DatabaseManager.h" #import "FMDatabase.h" @interface DatabaseManager() { FMDatabase *_database; } @end @implementation DatabaseManager //获取单例对象 +(id)sharedInstance { static DatabaseManager *dc=nil; if(dc==nil) { dc=[[[self class] alloc] init]; } return dc; } -(id)init { if (self=[super init]) { [self openDatabase]; } return self; } -(void)openDatabase { NSString *path=[[NSBundle mainBundle] pathForResource:@"data.sqlite" ofType:nil]; _database=[[FMDatabase alloc] initWithPath:path]; if (!_database.open) { NSLog(@"打开失败"); } } //获取第一级目录 -(NSArray *)firstLevels { NSString *sql=@"select * from firstlevel"; FMResultSet *resultset=[_database executeQuery:sql]; NSMutableArray *marr=[[NSMutableArray alloc] init]; while ([resultset next]) { FirstLevelModel *model=[[FirstLevelModel alloc] init]; model.pid=[resultset stringForColumn:@"pid"]; model.pname=[resultset stringForColumn:@"pname"]; model.pcount=[resultset stringForColumn:@"pcount"]; [marr addObject:model]; } return marr; }
标签:
原文地址:http://www.cnblogs.com/DWdan/p/4390504.html