数据库(sqlite3)项目实际应用
来源:互联网 发布:淘宝怎么实名认证激活 编辑:程序博客网 时间:2024/05/18 13:43
在Xcode7.0以上版本里面,开发中如果想用数据库,就得在工程里面导入 sqlite3:
具体步骤:选择工程 -->Build Phases -->Link Binary With Libraries
导入完成后,就是怎么运用它了!
一般我会把数据库的增删改查封装成一个类,例如下面:
<span style="color:#ff0000;">这是这个类的.h文件</span>#import <Foundation/Foundation.h>#import <sqlite3.h>@interface HFG_DataManager : NSObject{ sqlite3 *dm;}+ (instancetype) shareManger;/**建表*/- (BOOL) creatTableWithSql:(NSString *)sql;/**插入数据*/- (BOOL) insertMessageWithsql:(NSString *)sql;/**删除数据*/- (BOOL) deleteMessageWithSql:(NSString *)sql;/**修改数据*/- (BOOL) modifyMessageWithSql:(NSString *)sql;/**查找数据*/- (NSArray *)queryMessageWithSQL:(NSString *)sql andObject:(NSString *)obj ;@end
<pre name="code" class="objc"><span style="color:#ff0000;">这是这个类的.m文件</span>#import "HFG_DataManager.h"static HFG_DataManager *manager = nil;@implementation HFG_DataManager+ (instancetype) shareManger{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ manager = [[HFG_DataManager alloc]init]; }); return manager;}/**打开数据库*/- (int) openDB{// 打开数据库 NSString *adPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"点名表.sqlite"]; NSLog(@"%@",adPath); int result = sqlite3_open([adPath UTF8String], &dm); return result;}/**关闭数据库*/- (int) closeDB{ return sqlite3_close(dm);}/**建表*/- (BOOL) creatTableWithSql:(NSString *)sql{ if ([self openDB] == SQLITE_OK) { char *error; int result = sqlite3_exec(dm, [sql UTF8String], NULL, NULL, &error); [self closeDB]; if (result == SQLITE_OK) { return YES; }else{ return NO; } } return NO;}/**插入数据*/- (BOOL) insertMessageWithsql:(NSString *)sql{ if ([self openDB] == SQLITE_OK) { char *error; int result = sqlite3_exec(dm, [sql UTF8String], NULL, NULL, &error); [self closeDB]; if (result) { return YES; }else{ return NO; } } return NO;}/**删除数据*/- (BOOL) deleteMessageWithSql:(NSString *)sql{ if ([self openDB] == SQLITE_OK) { char *error; int result = sqlite3_exec(dm, [sql UTF8String], NULL, NULL, &error); [self closeDB]; if (result) { return YES; }else{ return NO; } } return NO;}/**修改数据*/- (BOOL) modifyMessageWithSql:(NSString *)sql{ if ([self openDB] == SQLITE_OK) { char *error; int result = sqlite3_exec(dm, [sql UTF8String], NULL, NULL, &error); [self closeDB]; if (result) { return YES; }else{ return NO; } } return NO;}// 查询数据- (NSArray *)queryMessageWithSQL:(NSString *)sql andObject:(NSString *)obj{ // 打开数据库 if ([self openDB]==SQLITE_OK ) { // 声明一个结果集 查询的结果 存在结果集 里面 sqlite3_stmt *stmt; // 校验 SQL 语句是否正确 // int nByte 为 -1 的时候 不限制 查询的长度 if ( sqlite3_prepare_v2(dm, [sql UTF8String] , -1, &stmt, NULL )==SQLITE_OK ) { // 绑定要查询的内容 NSString *searchContent = [NSString stringWithFormat:@"%%%@%%",obj]; if (sqlite3_bind_text(stmt, 1, [searchContent UTF8String], -1, NULL)==SQLITE_OK ) { // resultlist 用来装查询到的所有数据 NSMutableArray *resultList =[ NSMutableArray array ]; // 循环 查询 while (sqlite3_step(stmt)==SQLITE_ROW) { // icol 查询到的 这一条数据的列数 char *riqi = (char *)sqlite3_column_text( stmt, 1); // 把查询到的一条数据整合到一个字典里面 NSDictionary *info = @{@"studentName":[NSString stringWithUTF8String:riqi]}; [resultList addObject:info]; } [ self closeDB ]; return resultList; } } } return nil;}@end
把它封装好以后,我们具体使用该怎么用呢?比如说你的工程里面的数据会发生变化,你就可以用数据库来保存,下面是我的工程:
我这个工程是 “点名”,点一次名,就少一个人,代码如下:
/**抽奖停止*/- (void) choujiangStop{ timer.fireDate = [NSDate distantFuture];// 定时器停止 NSLog(@"抽到的人是:%@",label.text); HFG_DataManager *manager = [HFG_DataManager shareManger]; // 初始化// 创建表 BOOL success = [manager creatTableWithSql:@"create table if not exists user (id integer primary key autoincrement,studentName text);"]; if (success) { NSLog(@"建表成功"); }// 插入数据 NSString *sql = [NSString stringWithFormat:@"insert into user(studentName) values('%@');",label.text]; if ([manager insertMessageWithsql:sql] == SQLITE_OK) { NSLog(@"插入成功"); }}在 ViewDidload 里面,把存好的数据取出来:
NSArray *list = [manager queryMessageWithSQL:@"select id,studentName from user where studentName like ?;" andObject:@"" ];由于我的数据库里面只存了一个字段的数据,所以SQL语句会不一样,这SQL语句视具体情况而定,其它的语句使用可以查看Sqlite3的使用,我所知知识尚少,如有不满意之处,敬请谅解。
0 0
- 数据库(sqlite3)项目实际应用
- android实际项目中数据库的应用(增删改查)
- 数据库优化-垂直切分以及在实际项目中的应用
- 数据库优化-水平切分-以及在实际项目中的应用
- VisualNet项目实际应用其一
- VisualNet项目实际应用其二
- Json实际项目中应用
- PI数据库实际应用心得
- mysql数据库实际应用总结
- 数据库中如何写视图,以及视图项目中实际应用
- (四)实际项目中负载均衡调度算法实际应用
- (四)实际项目中负载均衡调度算法实际应用
- 实际项目中负载均衡调度算法实际应用
- Sqlite3.0数据库在iPhone中的应用
- django之数据库(sqlite3, mongoDB)应用
- NHibernate在实际项目中的应用
- 设计模式在实际项目中的应用
- jquery实际项目中的应用2
- A UML Model for Mobile Game on the Android OS
- 虚基类
- maryland上安装opencv
- 使用PHP生成二维码的两种方法(带logo图像)
- 机器学习算法总览——思维导图
- 数据库(sqlite3)项目实际应用
- 最少找零问题与完全背包模型的一点思考
- Letter Combinations of a Phone Number
- HDU 1085 母函数
- oc学习笔记-protocol代理模式
- 使用netstat检测及监测网络连接
- BFS与DFS
- 004.简单的加减乘除
- Cache工作原理