24点小游戏iOS开发(二)--fmdb数据库相关
来源:互联网 发布:音频剪辑合并软件 编辑:程序博客网 时间:2024/06/07 22:12
界面的设计就是简单的在storyboard中拖入控件然后在头文件.h中声明功能然后连接即可。
为了存下用户的数据,我参考了一个扫雷小游戏的源码,选择利用fmdb来存储。
一、先安装cocoapods,可参考这个http://www.jianshu.com/p/9e4e36ba8574。到导入第三方库的时候导入fmdb即可。
并在你的项目中的targets中build phases 中的link binary with libraries中添入libsqlite3.dylib库。
以下我是先参考了一些博客的代码,(为了验证找生成的数据库文件找了很久...在这个/Users/你的用户名/Library(需要先设置显示隐藏文件)/Developer/CoreSimulator/Devices/路径下然后查找文件即可,用火狐的SQLite manage看了看生成的数据),成功在控制台看到自己的用户信息之后,经过学姐的提示,用数组来存储用户信息,我选择的是简单的用lable text来显示用户信息,用降序排列,并设置了排行榜按钮,设计了按下之后再显示label的内容的功能(利用alpha属性)。
platform :ios,'7.0'target '24' dopod 'FMDB'end
.h中:#import "FMDB.h"#define DBNAME @"personinfo.sqlite"#define NAME @"name"#define SCORE @"score"#define TIME @"time"#define TABLENAME @"PERSONINFO".m中:-(IBAction)buttonsave{ NSString *sqlCreateTable = @"CREATE TABLE IF NOT EXISTS PERSONINFO (ID INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, score INTEGER, time INTEGER)"; [self execSql:sqlCreateTable]; NSString *sql1 = [NSString stringWithFormat: @"INSERT INTO '%@' ('%@', '%@', '%@') VALUES ('%@', '%d', '%d')", TABLENAME, NAME, SCORE, TIME,_NameLabel.text,score, lable18]; [self execSql:sql1];//插入新输入的用户信息 NSString *sqlQuery = @"SELECT * FROM PERSONINFO ORDER BY score DESC"; sqlite3_stmt * statement; NSMutableArray *dataArr = [[NSMutableArray alloc]init]; if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK) { while (sqlite3_step(statement) == SQLITE_ROW) { char *name = (char*)sqlite3_column_text(statement, 1); NSString *nsNameStr = [[NSString alloc]initWithUTF8String:name]; int scoree = sqlite3_column_int(statement, 2); int time = sqlite3_column_int(statement, 3); NSString *stuData = [NSString stringWithFormat:@"name:%@ score:%d time:%d",nsNameStr,scoree, time]; [dataArr addObject:stuData]; } } sqlite3_close(db); lableone.text = [dataArr objectAtIndex: 0]; labletwo.text = [dataArr objectAtIndex: 1]; lablethree.text = [dataArr objectAtIndex: 2]; }//保存插入并重新排序-(void)execSql:(NSString *)sql{ char *err; if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) { sqlite3_close(db); NSLog(@"数据库操作数据失败!"); }}- (void)database1{ //数据库 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documents = [paths objectAtIndex:0]; NSString *database_path = [documents stringByAppendingPathComponent:DBNAME]; if (sqlite3_open([database_path UTF8String], &db) != SQLITE_OK) { sqlite3_close(db); NSLog(@"数据库打开失败"); } NSString *sqlCreateTable = @"CREATE TABLE IF NOT EXISTS PERSONINFO (ID INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, score INTEGER, time INTEGER)"; NSLog(@"创表"); [self execSql:sqlCreateTable];//插入初始数据 NSString *sql1 = [NSString stringWithFormat: @"INSERT INTO '%@' ('%@', '%@', '%@') VALUES ('%@', '%@', '%@')", TABLENAME, NAME, SCORE, TIME, @"张三", @"1", @"20"]; NSString *sql2 = [NSString stringWithFormat: @"INSERT INTO '%@' ('%@', '%@', '%@') VALUES ('%@', '%@', '%@')", TABLENAME, NAME, SCORE, TIME, @"老六", @"2", @"30"]; NSString *sql3 = [NSString stringWithFormat: @"INSERT INTO '%@' ('%@', '%@', '%@') VALUES ('%@', '%@', '%@')", TABLENAME, NAME, SCORE, TIME, @"老4", @"4", @"37"]; NSString *sql4 = [NSString stringWithFormat: @"INSERT INTO '%@' ('%@', '%@', '%@') VALUES ('%@', '%@', '%@')", TABLENAME, NAME, SCORE, TIME, @"老5", @"5", @"39"]; [self execSql:sql1]; [self execSql:sql2]; [self execSql:sql3]; [self execSql:sql4]; NSString *sqlQuery = @"SELECT * FROM PERSONINFO ORDER BY score DESC"; sqlite3_stmt * statement; NSMutableArray *dataArr = [[NSMutableArray alloc]init]; if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK) { while (sqlite3_step(statement) == SQLITE_ROW) { char *name = (char*)sqlite3_column_text(statement, 1); NSString *nsNameStr = [[NSString alloc]initWithUTF8String:name]; int scoree = sqlite3_column_int(statement, 2); int time = sqlite3_column_int(statement, 3); NSString *stuData = [NSString stringWithFormat:@"name:%@ score:%d time:%d",nsNameStr,scoree, time]; [dataArr addObject:stuData]; } } sqlite3_close(db); lableone.text = [dataArr objectAtIndex: 0]; labletwo.text = [dataArr objectAtIndex: 1]; lablethree.text = [dataArr objectAtIndex: 2];}-(IBAction)buttonqc{ //清除数据库里所有数据 NSString *delete = @"delete from PERSONINFO"; [self execSql:delete];} lable1.alpha=0.0; lable2.alpha=0.0; lable3.alpha=0.0; lable4.alpha=0.0;//隐藏
阅读全文
0 0
- 24点小游戏iOS开发(二)--fmdb数据库相关
- 24点小游戏ios开发(一)
- iOS开发数据库-FMDB
- iOS FMDB数据库加密相关
- IOS FMDB数据库相关操作
- FMDB数据库(二)
- iOS的数据库相关操作(基于fmdb)
- iOS开发——数据库(FMDB框架的使用)
- iOS开发(OC)——FMDB数据库的使用
- 【iOS】数据库FMDB的使用(二)
- IOS 操作数据库(FMDB)
- ios开发FMDB导入SQLCipher加密数据库
- ios开发FMDB导入SQLCipher加密数据库
- iOS开发—数据库FMDB简单介绍
- ios开发FMDB导入SQLCipher加密数据库
- ios开发FMDB导入SQLCipher加密数据库
- ios开发FMDB导入SQLCipher加密数据库
- iOS开发-进阶:数据库操作(使用FMDB)
- javascript中的执行环境和作用域详解
- 基于htmlparser实现网页内容解析
- SVG 快速入门
- ie8支持foreach
- git常用指令
- 24点小游戏iOS开发(二)--fmdb数据库相关
- Mybatis(一)
- c++primer顺序容器知识点 第九章课后题
- session 设置失效时间
- 访问远程服务器Redis失败解决方法
- 为什么分类里的属性没有成员变量
- Math类与BigDecimal类
- OpenVPN下载、安装、配置及使用详解 OpenVPN简介 OpenVPN是一个用于创建虚拟专用网络(Virtual Private Network)加密通道的免费开源软件。使用OpenVPN可以方
- vmware Workstation下安装redhat linux+oracle12c 之一 创建虚拟机