使用SQLite之前 需要添加libsqlite3.0.tbd
#import "ViewController.h"
#import <sqlite3.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//1.创建一个空的数据库文件
NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSString *dataBasePath = [docPath stringByAppendingPathComponent:@"test1.sqlite"];
NSLog(@"%@", dataBasePath);
//数据库句柄
sqlite3 *dataBase;
//如果没有数据库文件 就穿件,否则就打开
int ret = sqlite3_open([dataBasePath cStringUsingEncoding:NSUTF8StringEncoding], &dataBase);
if (ret != SQLITE_OK) {
NSLog(@"数据库创建失败!");
return;
}
//下面的操作除了查询操作,剩余的基本都用sqlite3_exec(execute)
//2.创建空表(SQL语句)
char *errmsg;
const char *sql = "create table if not exists person (id integer primary key, name text, age integer)";
ret = sqlite3_exec(dataBase, sql, NULL, NULL, &errmsg);
if (ret != SQLITE_OK) {
NSLog(@"表创建失败 %s", errmsg);
return;
}
//3.插入数据
const char *insertSql = "insert into person (name, age) values ('zuokai', 20)";
ret = sqlite3_exec(dataBase, insertSql, NULL, NULL, &errmsg);
if (ret != SQLITE_OK) {
NSLog(@"插入数据失败:%s", errmsg);
return;
}
//4.更新
const char *updateSql = "update person set name = 'hah' where id = 1";
ret = sqlite3_exec(dataBase, updateSql, NULL, NULL, &errmsg);
if (ret != SQLITE_OK) {
NSLog(@"更新失败:%s", errmsg);
return;
}
//5.查询
const char *querySql = "select * from person";
sqlite3_stmt *stmt;
ret = sqlite3_prepare_v2(dataBase, querySql, -1, &stmt, NULL);
if (ret == SQLITE_OK) {
//从stmt变量中获取所有记录
while (sqlite3_step(stmt) == SQLITE_ROW) {
//有记录的(根据不同的字段类型选不同的函数)
//id(从stmt中取数据+指定哪一列)
int personID = sqlite3_column_int(stmt, 0);
//name
char *name = (char *)sqlite3_column_text(stmt, 1);
//age
int age = sqlite3_column_int(stmt, 2);
NSLog(@"id:%d, name:%s, age:%d", personID, name, age);
}
}
//6.收尾工作(对数据库操作完,断开连接)
sqlite3_close(dataBase);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end