<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); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。