SQLite数据库操作流程
发布时间:2020-12-12 19:41:56 所属栏目:百科 来源:网络整理
导读:span style="font-family: Arial,Helvetica,sans-serif;"/spanpre name="code" class="objc" SQLite常用函数:打开数据库: sqlite3_open();关闭数据库: sqlite3_close();执行SQL语句: sqlite3_exec();编译SQL语句: sqlite3_prepare_v2();执行查询SQL语句
<span style="font-family: Arial,Helvetica,sans-serif;"></span><pre name="code" class="objc"> SQLite常用函数: 打开数据库: sqlite3_open(); 关闭数据库: sqlite3_close(); 执行SQL语句: sqlite3_exec(); 编译SQL语句: sqlite3_prepare_v2(); 执行查询SQL语句: sqlite3_setp(); 结束SQL语句: sqlite3_finalize(); 绑定参数: sqlite3_bind_text(); 查询字段上的数据: sqlite3_column_text(); 新建一个类继承于NSObject 添加系统库libsqlite3.dylib 并导入文件 #import <sqlite3.h> //创建表</span> - (BOOL)createTable { // 1.打开数据库 // (1)动态获取doc目录 设置存储数据库目录 NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) lastObject]; // (2)拼接路径 NSString *SQLPath = [doc stringByAppendingPathComponent:@"myData.sqlite"]; // (3)声明一个数据库变量 sqlite3 *sqlite = nil; // (4)打开数据库 :如果有数据库则直接打开,如果没有则创建 int open = sqlite3_open([SQLPath UTF8String],&sqlite); // (5)如果打开数据库失败了 if (open != SQLITE_OK) { NSLog(@"打开失败"); return NO; } // 2.写sql数据 NSString *sql = @"CREATE TABLE if not exists user(user_name text,user_age integer,user_id integer )"; // (1)执行语句 char *error = nil; int exec = sqlite3_exec(sqlite,[sql UTF8String],NULL,&error); // (2)如果执行语句失败了 if (exec != SQLITE_OK) { NSLog(@"执行失败"); sqlite3_close(sqlite); return NO; } // 3.关闭数据库 sqlite3_close(sqlite); return YES; } //插入数据 - (BOOL)insertData:(UserModel *)model { // 1.打开数据库 // (1)动态获取doc目录 设置存储数据库目录 NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,YES) lastObject]; // (2)拼接路径 NSString *SQLPath = [doc stringByAppendingPathComponent:@"myData.sqlite"]; // (3)声明一个数据库变量 sqlite3 *sqlite = nil; // (4)打开数据库 :如果有数据库则直接打开,如果没有则创建 int result = sqlite3_open([SQLPath UTF8String],&sqlite); // (5)如果打开数据库失败了 if (result != SQLITE_OK) { NSLog(@"打开失败"); return NO; } // 2.编写SQL数据 ?是占位符 NSString *sql = @"insert into user(user_name,user_age,user_ID) values(?,?,?)"; // 3.编译SQL语句 // (1)声明数据库句柄 sqlite3_stmt *stmt = nil; // (2)编译SQL语句 result = sqlite3_prepare_v2(sqlite,-1,&stmt,NULL); // (3)如果编译失败了 if (result != SQLITE_OK) { NSLog(@"编译失败"); // 关闭数据库 sqlite3_close(sqlite); } // (4)绑定数据 int:?的位置 从1开始 // 需要绑定的数据 NSString *name = model.name; NSInteger age = model.age; NSInteger ID = model.ID; sqlite3_bind_text(stmt,1,[name UTF8String],nil); sqlite3_bind_int64(stmt,2,age); sqlite3_bind_int64(stmt,3,ID); // 4.执行SQL语句 result = sqlite3_step(stmt); if (result != SQLITE_DONE) { NSLog(@"执行语句失败"); //关闭数据库 sqlite3_close(sqlite); //关闭句柄 sqlite3_finalize(stmt); } // 5.关闭数据库和句柄 //关闭数据库 sqlite3_close(sqlite); //关闭句柄 sqlite3_finalize(stmt); return YES; } //更新数据 - (BOOL)updateData { // 1.打开数据库 // (1)动态获取doc目录 设置存储数据库目录 NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,&sqlite); // (5)如果打开数据库失败了 if (result != SQLITE_OK) { NSLog(@"打开失败"); return NO; } // 2.编写SQL数据 ?是占位符 NSString *sql = @"update user set user_name=? where user_age=? "; // 3.编译SQL语句 // (1)声明数据库句柄 sqlite3_stmt *stmt = nil; // (2)编译SQL语句 result = sqlite3_prepare_v2(sqlite,NULL); // (3)如果编译失败了 if (result != SQLITE_OK) { NSLog(@"编译失败"); // 关闭数据库 sqlite3_close(sqlite); } // (4)绑定数据 int:?的位置 从1开始 // 需要绑定的数据 NSString *name = @"孔子"; NSInteger age = 100; sqlite3_bind_text(stmt,age); // 4.执行SQL语句 result = sqlite3_step(stmt); if (result != SQLITE_DONE) { NSLog(@"执行语句失败"); //关闭数据库 sqlite3_close(sqlite); //关闭句柄 sqlite3_finalize(stmt); } // 5.关闭数据库和句柄 //关闭数据库 sqlite3_close(sqlite); //关闭句柄 sqlite3_finalize(stmt); return YES; } //查询语句 - (void)selectData { // 1.打开数据库 // (1)动态获取doc目录 设置存储数据库目录 NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,&sqlite); // (5)如果打开数据库失败了 if (result != SQLITE_OK) { NSLog(@"打开失败"); } // 2.编写SQL数据 ?是占位符 NSString *sql = @"select * from user where user_name=?"; // 3.编译SQL语句 // (1)声明数据库句柄 sqlite3_stmt *stmt = nil; // (2)编译SQL语句 result = sqlite3_prepare_v2(sqlite,NULL); // (3)如果编译失败了 if (result != SQLITE_OK) { NSLog(@"编译失败"); // 关闭数据库 sqlite3_close(sqlite); } // (4)绑定数据 int:?的位置 从1开始 // 需要绑定的数据 NSString *name = @"孔子"; sqlite3_bind_text(stmt,nil); // 4.执行SQL语句 result = sqlite3_step(stmt); //循环遍历后的数据列表 while (result == SQLITE_ROW) { //取出字段为0 的数据 char *name = (char *)sqlite3_column_text(stmt,0); NSInteger age = sqlite3_column_int64(stmt,1); NSInteger ID = sqlite3_column_int64(stmt,2); //char转字符串 NSString *nameStr = [NSString stringWithUTF8String:name]; NSLog(@"%@,%ld,%ld",nameStr,age,ID); result = sqlite3_step(stmt); } sqlite3_close(sqlite); sqlite3_finalize(stmt); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |