SQLite简介
:SQLite是遵守ACID的关系型数据库管理系统,它包含在一个相对较小的C程序库中,与许多其它数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是被集成在用户程序中。
/ //1.创建数据库----sqlite_open,如果指定沙盒路径不存在数据库,则先创建,再打开
// sqlite3* _sqlite;
// NSString* saveDocumentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
// NSString* _sqlitePath = [saveDocumentsPath stringByAppendingPathComponent:@"person.sqlite"];
// NSLog(@"_sqlitePath---%@",_sqlitePath);
// int result = sqlite3_open(_sqlitePath.UTF8String, &_sqlite);
// if (result == SQLITE_OK) {
//
// NSLog(@"打开数据库成功");
// //2. 打开数据库之后------------创建数据表
// 建表格式: create table if not exists 表名 (列名 类型,....) 注: 如需生成默认增加的id: id integer primary key autoincrement// NSString* sqliteCreateTable = @"create table if not exists person (id integer primary key autoincrement,username text,age integer,gender integer,birthday numeric)";
//
// char* error = NULL;
// int resultTable = sqlite3_exec(_sqlite, sqliteCreateTable.UTF8String, NULL, NULL, &error);
// if (resultTable!= SQLITE_OK) {
//
// NSLog(@"创建表格失败");
// sqlite3_free(error);
// }
// //创建完毕之后可以在沙盒中查看数据库。
//
//
// // 3.创建表格成功之后要-----关闭数据库----
// sqlite3_close(_sqlite);
//
// }else{
// NSLog(@"打开数据库失败");
// }
//在打开数据库的前提下-----------------插入数据----------
// NSString *sqlInsert = [NSString stringWithFromat:@"insert into person(username,age,gender,birthday) values(?,?,?,?)",@"小明",@(22),@(1),[NSDate date]] ;
// char *errorMsg = NULL;
// sqlite3_stmt *stmt;
//
// if (sqlite3_prepare_v2(_db, sqlInsert.UTF8String, -1, &stmt, NULL) == SQLITE_OK) {
//
// sqlite3_bind_text(stmt, 1, [username UTF8String], -1, NULL);
// sqlite3_bind_int(stmt, 2, [age intValue]);
// sqlite3_bind_int(stmt, 3, [gender intValue]);
// sqlite3_bind_double(stmt, 4, [birthday timeIntervalSince1970]);
// }
// if (sqlite3_step(stmt) != SQLITE_DONE)
// NSLog(@"insert error");
//在打开数据库的前提下-----------------删除指定数据----------
// 删除
// sql语句格式: delete from 表名 where 列名 = 参数 注:后面的 列名 = 参数 用于判断删除哪条数据
// NSString *sqlDelete = [NSString stringWithFromat:@"delete from person where username=?",username] ;
// sqlite3_stmt *stmt = NULL;
// int result = sqlite3_prepare_v2(_db, sqlDelete.UTF8String, -1, &stmt, NULL);
// if (result != SQLITE_OK) {
// NSLog("sqlite stmt prepare error");
// return NO;
// }
// sqlite3_bind_text(stmt, 1, username.UTF8String, -1, NULL);
// result = sqlite3_step(stmt);
// sqlite3_finalize(stmt);
// if (result == SQLITE_ERROR) {
// NSLog(@"delete error");
// return NO;
// }
//在打开数据库的前提下-----------------查找指定的数据----------
// 查找
// sql语句格式: select 列名 from 表名 where 列名 = 参数 注:前面的列名为查询结果里所需要看到的 列名,后面的 列名 = 参数 用于判断删除哪条数据
// NSString *sqlQuery = [NSString stringWithFromat:@"select * from person where username=%@",username] ;
// sqlite3_stmt * statement;
//
// if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK) {
// sqlite3_bind_text(stmt, 1, username.UTF8String, -1, NULL);
// if (sqlite3_step(statement) == SQLITE_ROW) {
// char *username = (char*)sqlite3_column_text(statement, 1);
// NSString *usernameStr = [[NSString alloc]initWithUTF8String:username];
// int age = sqlite3_column_int(statement, 2);
// int gender = sqlite3_column_int(statement, 3);
// double birthday = sqlite3_column_double(statement, 4);
// NSDate *birthdayDate = [NSDate dateWithTimeIntervalSince1970:birthday];
//
// }
// }
//在打开数据库的前提下-----------------修改指定的数据----------
// 修改
// sql语句格式: update 表名 set 列名 = 新参数 where 列名 = 参数 注:前面的 列名 = 新参数 是修改的值, 后面的 列名 = 参数 用于判断删除哪条数据
// NSString *sqlUpdate = [NSString stringWithFromat:@"update person set age=? where username=?",age,username] ;
// sqlite3_stmt *stmt;
// if (sqlite3_prepare_v2(_db, sqlUpdate.UTF8String, -1, &stmt, NULL) == SQLITE_OK) {
// sqlite3_bind_int(stmt, 1, (int)age(NULL));
// sqlite3_bind_text(stmt, 2, username.UTF8String, -1, NULL);
// int result = sqlite3_step(stmt);
// if (result != SQLITE_DONE) {
// NSLog(@"update error");
// return NO;
// }
// }