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;//隐藏



原创粉丝点击