数据库
2. MesaAQlite使用
实例:使用数据存储一个班上学生的信息
学号 sid 用户名 useername 密码 password 分数score
1501 zhangsan 1234 100
1503 lisi 2341 90
1502 wanglaowu 3412 80
(1)创建数据库
(2)创建数据表
(3)设计数据表(添加多个段/列)
(4)数据库的常用操作:增,删,查,改
3. SQL结构化查询语句
SQL,Stucture,Query Language,结构化查询语言,作用是操作数据库(创建表,对数据库,增,删,改,查)
(1)创建数据表
create table if not exists StuInfo (sid integer,usernamevarchar(20),password varchar(20),score varchar(20) )
(2)插入数据
insert into StuInfo (sid,username,password,score)values(1501,'zhangsan','1234','100’)
insert into StuInfo (sid,username,password,score)values(1502,'lisi','2341','90');
insert into StuInfo (sid,username,password,score)values(1503,'wanglaowu','3412','80')
(3)查询数据
<1>查询表格中所有数据
select * from StuInfo
<2>查询指定的字段
select username from StuInfo
<3>根据指定的条件进行查询
select *from StuInfo where score='80'
<4>根据多个条件进行查询
select *from StuInfo where password='1234' and score='100'
<5>查询后需要排序
select *from StuInfo order by score
//根据age升序排列
select *from StuInfo order by score desc
<6>获取数据行数
select count(*) from StuInfo
(4)修改数据
update StuInfo set score='10' where password ='1234’;
(5)删除数据
delete from StuInfo where password='1234';
4.FMDB 第三方开源数据库
(1)配置
导入文件,添加二进制库 libsqlite3.dylib
包含头文件#import "FMDatabase.h"
5. 数据库在项目中使用-单例设计模式
#import "QFViewController.h" #import "FMDatabase.h" @interface QFViewController () //定义一个数据库对象 { FMDatabase *_database; } @end @implementation QFViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. // (1)创建数据库 [self createAndInitDataBase]; // (2)创建数据表 [self createTable]; // (3)插入数据 [self insertData]; // (4)查询数据 [self queryData]; // (5)修改和删除数据 } -(void)createAndInitDataBase { // ios安全机制 沙盒 // (1)每个应用都在自己的沙盒目录下运行 // (2)每个应用只能对自己沙盒下地文件进行操作 // (3)默认文件夹 Documents,Library,tmp // 确定文件位置 // 当前应用文件夹:NSHomeDirectory() // NSLog(@"home=%@",NSHomeDirectory()); // NSLog(@"%@",[[NSFileManager defaultManager]contentsOfDirectoryAtPath:NSHomeDirectory() error:nil]); // 设置路径 NSString *path=[NSString stringWithFormat:@"%@/Documents/StuIfo.sqlite",NSHomeDirectory()]; _database=[[FMDatabase alloc]initWithPath:path]; if(!_database.open) { NSLog(@"打开失败"); return; } NSLog(@"打开成功"); } -(void)createTable { NSString *sql=@"create table if not exists "//冒号前必须有空格 "StuIfo(sid integer,username varchar(20),password varchar(20),score varchar(20))"; // excutequery用来执行select语句 // 其他语句使用executeUpdate BOOL b=[_database executeUpdate:sql]; NSLog(@"create b=%d",b); } -(void)insertData { int sid=1501; NSString *username=@"zhangsan"; NSString *password=@"123"; NSString *score=@"100"; NSString *sql=@"insert into StuIfo(sid,username,password,score) values(?,?,?,?)"; // 注意:对应的每一个参数都应该是字符串,其他类型须转化为字符串 BOOL b=[_database executeUpdate:sql,[NSString stringWithFormat:@"%d",sid],username,password,score];//sql的所有参数必须是字符串 NSLog(@"%d",b); } -(void)queryData { // 显示所有人得数据 NSString *sql=@"select * from StuIfo"; // 表示查询后的结果集 FMResultSet *resultset=[_database executeQuery:sql]; // next方法每次获取一条记录,获取不到返回nil while ([resultset next]) { NSLog(@"sid=%@,name=%@,pass=%@,score=%@", [resultset stringForColumn:@"sid"], [resultset stringForColumn:@"username"], [resultset stringForColumn:@"score"], [resultset stringForColumn:@"password"]); } }