Sqlite是一款轻型的数据库,现在最新版本为Sqlite3.
Sqlite是开源的,它采用C语言编写,具有可移植性强,可靠性高,小而容易使用的特点.
在存储和检索大量数据方面非常有效,它还能够对数据进行复杂的聚合,与NSUserDefaults,数据归档等方式相比,获取结果的速度更快
有符号的整数类型
浮点类型
字符串类型,采用UTF-8和UTF-16字符编码
二进制大对象类型,能够存放任何二进制数据
每个表只能有一个,修饰的字段值不能重复,不能为空
例:
(uid integer primary key autoincrement,name,score)
可以有多个,修饰的字段值不能重复,可以为空
例:
(uid integer unique,name,score)
和其他表相关联的字段
;
结尾,注意是sql语句,而不是终端sqlite命令语句;
sqlite3 数据库名.db
程序举例:
打开database.db数据库文件,如果文件不存在,则创建
sqlite3 database.db
.quit
.table
①create table 表名(字段1,字段2,...);
②create table if not exists 表名(字段1,字段2,...);
程序举例:
//1.
create table USER(id,name,score);
//2.
create table if not exists USER(id integer primary key auto increment,name,score);
①drop table 表名;
②drop table if exists 表名;
程序举例:
drop table USER;
insert into 表名(字段1,字段2,...) values(值1,值2,...);
程序举例:
insert into USER(id,name,score) values(1,"Story5",95);
delete from 表名 where 条件;
程序举例:
delete from USER where id=1;
update 表名 set 字段=新值 where 条件;
程序举例:
update USER set score = 99 where id = 1;
select * from USER;
select * from USER limit n;
select 字段1,字段2 from 表名;
select 字段1,字段2 from 表名 order by 字段 asc/desc;
select USER.name,KUNGFU.name,USER.score from USER,KUNGFU where USER.id = KUNGFU.id;
select count(*) from 表名;
select num(字段) from 表名;
select avg(字段) from 表名;
select max(字段) from 表名;
select min(字段) from 表名;
Build Phases —> Link Binary With Libraries —> Add —> 导入libsqlite3.tbd系统库
NSString *sandBoxFilePath = [NSString stringWithFormat:@"%@/Documents/abc.db", NSHomeDirectory()];
FMDatabase *fmdb = [[FMDatabase alloc] initWithPath:sandBoxFilePath];
BOOL res = [fmdb open];
if (res == NO) {
NSLog(@"数据库打开失败");
}
res = [fmdb executeUpdate:@"create table if not exists USER(uid integer primary key autoincrement,name,age,image)"]; if (res == NO) { NSLog(@"创建表失败"); }
数据库只能存储NSString
,NSNumber
,NSData
类
int age = [_ageField.text intValue];
NSData* data = UIImagePNGRepresentation(_imageView.image);
BOOL res = [fmdb executeUpdate:@"insert into USER(name,age,image) values(?,?,?)", _nameField.text, [NSNumber numberWithInt:age], data];
if (res == NO) {
NSLog(@"添加用户失败");
} else {
NSLog(@"添加用户成功");
}
BOOL res = [fmdb executeUpdate:@"delete from USER where name=?", _nameField.text]; if (res) { NSLog(@"删除成功"); }
/* uid name age 1 李寻欢 38 2 李不欢 58 3 李亚鹏 48 */
FMResultSet *set = [fmdb executeQuery:@"select * from USER"];
while ([set next]) { //取出每一个字段的值 NSString* name = [set stringForColumn:@"name"];
int age = [set intForColumn:@"age"];
NSData* data = [set dataForColumn:@"image"];
NSLog(@"%@-%d", name, age);
}