1.添加数据库并导入头文件
#import <sqlite3.h>
2.定义一个数据库指针
@property(nonatomic, assign) sqlite3 *sql;
3.打开/创建数据库
//如果数据库不存在就创建 如果存在就直接打开
- (void)open{
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:@"db.sql"];
int result = sqlite3_open([path UTF8String], &_sql);
if (result == SQLITE_OK) {
NSLog(@"打开数据库成功");
}else{
NSLog(@"打开数据库失败");
}
}
4.创建表
- (void)createTable{
//1.创建sql语句
NSString *createSql = @"create table student(id integer primary key autoincrement, name text, age integer)";
//2.执行语句
int result = sqlite3_exec(_sql, [createSql UTF8String], NULL, NULL, NULL);
if (result == SQLITE_OK) {
NSLog(@"创建表成功");
}else{
NSLog(@"创建表失败");
}
}
5.插入数据(一条记录)
- (void)insert{
NSString *insertSql = @"insert into student(name,age) values('jack',20)";
if (sqlite3_exec(_sql, [insertSql UTF8String], NULL, NULL, NULL)) {
NSLog(@"插入数据成功");
}else{
NSLog(@"插入数据失败");
}
}
6.插入数据(一个字段)
- (void)addColumn{
NSString *alterSql = @"alter table student add icon blob";
if (sqlite3_exec(_sql, [alterSql UTF8String], NULL, NULL, NULL)) {
NSLog(@"添加字段成功");
}else{
NSLog(@"添加字段失败");
}
}
7.插入数据(图片视频音频等类型)
- (void)insertMultiple{
//?:占位符
NSString *insetSql = @"insert into student(name,age,icon) values(?,?,?)";
//预处理
sqlite3_stmt *stmt = NULL;
if(sqlite3_prepare(_sql, [insetSql UTF8String], -1, &stmt, NULL) == SQLITE_OK) {
//取图片的二进制数据
UIImage *img = [UIImage imageNamed:@"1"];
NSData *imgData = UIImagePNGRepresentation(img);
//绑定数据
sqlite3_bind_text(stmt, 1, "jone", -1, NULL);
sqlite3_bind_int(stmt, 2, -1);
sqlite3_bind_blob(stmt, 3, [imgData bytes], (int)imgData.length, NULL);
//将绑定的数据保存到数据库里面
if (sqlite3_step(stmt) == SQLITE_DONE) {
NSLog(@"保存数据成功");
}else{
NSLog(@"保存数据失败");
}
}else{
NSLog(@"预处理失败");
}
}
8.更新数据
/*
sqlite3_open():
第一个参数:要打开的数据库的路径需要utf-8编码
第二个参数:数据库指针的地址
*/
- (void)update{
NSString *updateSql = @"update into student set name='rose',age=18 where id=1";
if (sqlite3_exec(_sql, [updateSql UTF8String], NULL, NULL, NULL)) {
NSLog(@"更新数据成功");
}else{
NSLog(@"更新数据失败");
}
}
9.查询表
- (void)select{
NSString *selectSql = @"select * from student";
//1.预处理 将数据先保存起来
sqlite3_stmt *stmt = NULL;
//-1:表示自动计算
if(sqlite3_prepare(_sql, [selectSql UTF8String], -1, &stmt, NULL) == SQLITE_OK){
//2.一条一条地读取数据
while (sqlite3_step(stmt) == SQLITE_ROW) {
//一列一列去取每一条记录
char *name = (char *)sqlite3_column_text(stmt, 1);
int age = sqlite3_column_int(stmt, 2);
NSData *data = [NSData dataWithBytes:sqlite3_column_blob(stmt, 3) length:sqlite3_column_bytes(stmt, 3)];
UIImage *image = [UIImage imageWithData:data];
NSLog(@"%@ %s %d",image ,name , age);
}
}else{
NSLog(@"预处理失败");
}
}