#import "ViewController.h"
#import <sqlite3.h>
@interface ViewController ()
//更新
- (IBAction)updateBtn;
//查询
- (IBAction)selectBtn;
//添加
- (IBAction)insterBtn;
//删除
- (IBAction)deleteBtn;
//db就是数据库的象征,增,删,改,查就是操作db实例
@property(nonatomic,assign)sqlite3 *db;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 数据库文件一般存储在沙盒当中,所以首先获取数据库文件路径
NSString *document = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
NSLog(@"%@",document);
//创建数据库文件
NSString *fileName = [document stringByAppendingPathComponent:@"Student.sqlite"];
//打开数据库
//第一个参数:const char *filename
//C语言字符串(需要将OC转为C语言的字符串)
//第二个参数:sqlite3 **ppDb 数据库实例
const char *cfileName = fileName.UTF8String;
int result = sqlite3_open(cfileName, &_db);
if (result == SQLITE_OK) {//SQLITE_OK 数据库打开成功
NSLog(@"数据库打开成功");
//数据库只有打开成功才可创建表
//建表
//1.代表的是数据库
//2.sql语句 if not exists:如果不存在就创建,反之...
//primary key autoincrement 主键自增
//
const char *sql = "create table if not exists t_student (id integer primary key autoincrement,name text not null,age integer not null);";
//3.指向函数的指针
//4.nil 第一个参数回调
//5.错误信息
result = sqlite3_exec(self.db, sql, NULL, NULL, NULL);
if (result == SQLITE_OK) {
NSLog(@"建表成功");
} else {
NSLog(@"建表失败---%s---%d",__FILE__,__LINE__);
}
}else{
NSLog(@"数据库打开失败");
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
//更新
- (IBAction)updateBtn {
}
//查询
- (IBAction)selectBtn {
//第一个参数:数据库实例
//第二个参数:sql语句
const char *sql = "select id, name, age from t_student where age = 40";
//第三个参数:-1 -> 系统自动计算sql语句长度
//第四个参数:伴随指针 -> 取数据
sqlite3_stmt *stmt = NULL;
//第五个参数:NULL
if (sqlite3_prepare(self.db, sql, -1, &stmt, NULL) == SQLITE_OK) {
NSLog(@"查询语句没有问题");
//取数据
//sqlite3_step每调用一次setp就从&stmt中取一次数据
while (sqlite3_step(stmt) == SQLITE_ROW) {//SQLITE_ROW 行数
//取出数据
//取出第一列字段的值(int 类型)
int ID = sqlite3_column_int(stmt, 0);
//取出第二列字段的值(text 类型)
const unsigned char *name = sqlite3_column_text(stmt, 1);
//取出第三列字段的值 (int 类型)
int age = sqlite3_column_int(stmt, 2);
NSLog(@"%d %s %d",ID,name,age);
}
} else {
NSLog(@"select error!");
}
}
//插入
- (IBAction)insterBtn {
char *errorMsg = NULL;
for (int i=0; i<20; i++) {
//
NSString *name = [NSString stringWithFormat:@"Xm-%d",arc4random_uniform(100)];
int age = arc4random_uniform(20) + 30;
//sql语句
NSString *sql = [NSString stringWithFormat:@"insert into t_student(name,age) values('%@','%d')",name,age];
sqlite3_exec(self.db, sql.UTF8String, NULL, NULL, &errorMsg);
}
if (errorMsg) {
NSLog(@"数据有误 %s",errorMsg);
}else{
NSLog(@"插入成功");
}
}
//删除
- (IBAction)deleteBtn {
}
@end