博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlite3基本操作
阅读量:5248 次
发布时间:2019-06-14

本文共 4271 字,大约阅读时间需要 14 分钟。

  在移动设备上进行高性能高效率的大量数据存储,我们一般用得时sqlite这款轻巧型的数据库,这里介绍其增删改查基本功能

  在ios开发中我们需要先导入"libsqlite3.dylib"这个动态库,然后在控制器中#import "sqlite3.h"

  在类扩展中定义成员变量:sqlite3 *_db

  然后定义数据库文件在手机沙盒中的存储位置以及数据库名称:

NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];

NSString *fileName = [path stringByAppendingPathComponent:@"myData.sqlite"];

  执行打开数据库操作:sqlite3_open([fileName UTF8String], &_db) 

  如果数据库是正常打开,我们可以根据需要来创建数据表:

CREATE TABLE IF NOT EXISTS cPerson(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,age INTEGER)

  然后可以对数据表的数据进行增删改查等操作:

  增:INSERT INTO cPerson (id, name, age) VALUES ('2','hehe','20')"

  删:DELETE FROM cPerson WHERE id = 2

  改:UPDATE cPerson set name = 'ashui' where id = 2

  查:SELECT * FROM cPerson

  最后执行关闭数据库操作:sqlite3_close(_db)

  绑定VALUES(?,?)中?的值:sqlite3_bind_text(sqlite3_stmt *, int, const char *,int n, void (*)(void *))

 

  具体代码实现:

1 #import "WYSViewController.h"  2 #import "sqlite3.h"  3   4 @interface WYSViewController (){  5       6     // 数据库  7     sqlite3 *_db;  8 }  9  10 @end 11  12 @implementation WYSViewController 13  14 - (void)viewDidLoad 15 { 16     [super viewDidLoad]; 17      18     NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; 19     NSString *fileName = [path stringByAppendingPathComponent:@"myData.sqlite"]; 20      21     // 打开数据库 22     if (sqlite3_open([fileName UTF8String], &_db) == SQLITE_OK){ 23          24         NSLog(@"数据库打开成功"); 25          26         // 如果不存在,则创建表 27         NSString *cPerson = [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS cPerson(id integer primary key autoincrement,name text,age integer)"]; 28         [self executeWithString:cPerson]; 29          30     } 31 } 32  33 // 执行操作 34 - (void)executeWithString:(NSString *)string 35 { 36     char *error = nil; 37      38     if (sqlite3_exec(_db, [string UTF8String], NULL, NULL, &error) == SQLITE_OK){ 39          40         NSLog(@"操作成功"); 41     } 42  43 } 44  45 - (IBAction)insertData:(id)sender{ 46      47     NSString *iP1 = [NSString stringWithFormat:@"INSERT INTO cPerson (id, name, age) VALUES ('%d','%@','%d')",2,@"hehe",20]; 48     [self executeWithString:iP1]; 49      50     NSString *iP2 = [NSString stringWithFormat:@"INSERT INTO cPerson (id, name, age) VALUES ('%d','%@','%d')",3,@"haha",22]; 51     [self executeWithString:iP2]; 52 } 53  54 // 删除数据 55 - (IBAction)deleteData:(id)sender { 56      57     NSString *dPerson = [NSString stringWithFormat:@"DELETE FROM cPerson WHERE id = 2"]; 58      59     [self executeWithString:dPerson]; 60      61     // 这种删除方式也行 62     //    sqlite3_stmt *statement; // 用于保存编译好的SQL语句 63     // 64     //    if (sqlite3_prepare_v2(_db, [dPerson UTF8String], -1, &statement, nil) == SQLITE_OK){ 65     // 66     //        while (sqlite3_step(statement) == SQLITE_ROW) { 67     // 68     ////            if (sqlite3_step(statement) == SQLITE_DONE){
69 // 70 //// } 71 // } 72 // 73 // NSLog(@"删除成功"); 74 // 75 // sqlite3_finalize(statement); 76 // } 77 78 // sqlite3_close(_db); 79 } 80 81 // 更新数据 82 - (IBAction)updataData:(id)sender { 83 84 NSString *uPerson = [NSString stringWithFormat:@"UPDATE cPerson set name = 'shuige' where id = 3"]; 85 86 [self executeWithString:uPerson]; 87 88 89 } 90 91 // 查询数据 92 - (IBAction)selectData:(id)sender { 93 94 95 NSString *sPerson = @"SELECT * FROM cPerson"; 96 sqlite3_stmt *statement; 97 98 if (sqlite3_prepare_v2(_db, [sPerson UTF8String], -1, &statement, nil) == SQLITE_OK){ 99 100 while(sqlite3_step(statement) == SQLITE_ROW){101 102 int id = sqlite3_column_int(statement, 0);103 104 char *name = (char *)sqlite3_column_text(statement, 1);105 106 NSString *nameStr = [[NSString alloc] initWithUTF8String:name];107 108 int age = sqlite3_column_int(statement, 2);109 110 NSLog(@"id:%d name:%@ age:%d",id,nameStr,age);111 }112 113 sqlite3_finalize(statement);114 }115 116 }117 @end

 

转载于:https://www.cnblogs.com/GeekStar/p/4630254.html

你可能感兴趣的文章
react双组件传值和传参
查看>>
BNU29140——Taiko taiko——————【概率题、规律题】
查看>>
[Kaggle] Sentiment Analysis on Movie Reviews
查看>>
价值观
查看>>
mongodb命令----批量更改文档字段名
查看>>
CentOS 简单命令
查看>>
使用 SharedPreferences 分类: Andro...
查看>>
TLA+(待续...)
查看>>
题解: [GXOI/GZOI2019]与或和
查看>>
MacOS copy图标shell脚本
查看>>
国外常见互联网盈利创新模式
查看>>
Oracle-05
查看>>
linux grep 搜索查找
查看>>
Not enough free disk space on disk '/boot'(转载)
查看>>
android 签名
查看>>
vue项目中使用百度统计
查看>>
android:scaleType属性
查看>>
SuperEPC
查看>>
mysql-5.7 innodb 的并行任务调度详解
查看>>
shell脚本
查看>>