sqlite3基本操作
在移动设备上进行高性能高效率的大量数据存储,我们一般用得时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 *))
具体代码实现:
#import "WYSViewController.h"
#import "sqlite3.h" @interface WYSViewController (){ // 数据库
sqlite3 *_db;
} @end @implementation WYSViewController - (void)viewDidLoad
{
[super viewDidLoad]; NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[];
NSString *fileName = [path stringByAppendingPathComponent:@"myData.sqlite"]; // 打开数据库
if (sqlite3_open([fileName UTF8String], &_db) == SQLITE_OK){ NSLog(@"数据库打开成功"); // 如果不存在,则创建表
NSString *cPerson = [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS cPerson(id integer primary key autoincrement,name text,age integer)"];
[self executeWithString:cPerson]; }
} // 执行操作
- (void)executeWithString:(NSString *)string
{
char *error = nil; if (sqlite3_exec(_db, [string UTF8String], NULL, NULL, &error) == SQLITE_OK){ NSLog(@"操作成功");
} } - (IBAction)insertData:(id)sender{ NSString *iP1 = [NSString stringWithFormat:@"INSERT INTO cPerson (id, name, age) VALUES ('%d','%@','%d')",,@"hehe",];
[self executeWithString:iP1]; NSString *iP2 = [NSString stringWithFormat:@"INSERT INTO cPerson (id, name, age) VALUES ('%d','%@','%d')",,@"haha",];
[self executeWithString:iP2];
} // 删除数据
- (IBAction)deleteData:(id)sender { NSString *dPerson = [NSString stringWithFormat:@"DELETE FROM cPerson WHERE id = 2"]; [self executeWithString:dPerson]; // 这种删除方式也行
// sqlite3_stmt *statement; // 用于保存编译好的SQL语句
//
// if (sqlite3_prepare_v2(_db, [dPerson UTF8String], -1, &statement, nil) == SQLITE_OK){
//
// while (sqlite3_step(statement) == SQLITE_ROW) {
//
//// if (sqlite3_step(statement) == SQLITE_DONE){
//
//// }
// }
//
// NSLog(@"删除成功");
//
// sqlite3_finalize(statement);
// } // sqlite3_close(_db);
} // 更新数据
- (IBAction)updataData:(id)sender { NSString *uPerson = [NSString stringWithFormat:@"UPDATE cPerson set name = 'shuige' where id = 3"]; [self executeWithString:uPerson]; } // 查询数据
- (IBAction)selectData:(id)sender { NSString *sPerson = @"SELECT * FROM cPerson";
sqlite3_stmt *statement; if (sqlite3_prepare_v2(_db, [sPerson UTF8String], -, &statement, nil) == SQLITE_OK){ while(sqlite3_step(statement) == SQLITE_ROW){ int id = sqlite3_column_int(statement, ); char *name = (char *)sqlite3_column_text(statement, ); NSString *nameStr = [[NSString alloc] initWithUTF8String:name]; int age = sqlite3_column_int(statement, ); NSLog(@"id:%d name:%@ age:%d",id,nameStr,age);
} sqlite3_finalize(statement);
} }
@end
最新文章
- 传智播客--ADO.net--SqlBulkCopy批量插入数据(小白必知)
- web网站的url设计
- Swift开发第七篇——字面量转换&;下标
- SpringMvc简单实例
- OSGi之Bundle
- Unity3D 使用 UI 的 Grid Layout Group 组件。
- 1205. By the Underground or by Foot?(spfa)
- 免费的在线Web文件管理器:Net2FTP,Pydio,eXtplorer,KodExplorer–功能强大
- jquery data方法
- Repeat Number
- iOS 辛格尔顿
- JAVA 平时作业一
- 让自己的网站实现在线编辑office文档
- Leetcode#561. Array Partition I(数组拆分 I)
- 使用Docker部署javaWeb应用
- IIS8.5 Error Code 0x8007007e HTTP 错误 500.19的解决方法
- sitecore系列教程之Sitecore个性化-体验概况概述
- mysql之commit,transaction事物控制
- hibernate 延迟加载深入分析(persistentSet的延迟加载)
- 【代码笔记】iOS-archive保存图片到本地