// 错误存储路径

- (NSString *)dataFilePath{

NSString *dbPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];

NSString *db_absoluteString = [dbPath stringByAppendingPathComponent:@"personal.db"]; // 找到personal.db数据库

NSLog(@"db_absoluteString: %@",db_absoluteString);

return db_absoluteString; // 返回数据库的路径

}

//插入数据

- (NSString *)insertDBFilePath{

NSString *dbPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];

NSString *db_absoluteString = [dbPath stringByAppendingPathComponent:@"cmread.sqlite"];

// NSLog(@"db_absoluteString: %@",db_absoluteString);

return db_absoluteString;

}

//获得所有个人信息

- (NSMutableArray *)getStoredPersons{

// 打开数据库

// UTFString格式

//  数据文件路径

if(sqlite3_open([[self dataFilePath] UTF8String],&database) !=SQLITE_OK){

sqlite3_close(database); // 关闭数据库

NSLog(@"open database failed!");

return nil;

}

NSMutableArray *array = [[NSMutableArray alloc] init];

NSString *query = [[NSString alloc] initWithFormat: @"select zaccountname,zlastlogintime,zlogincount from zLoginRecord order by zlastlogintime desc"];

sqlite3_stmt *statement;

if(sqlite3_prepare_v2(database, [query UTF8String],-1,&statement,nil) == SQLITE_OK){

while(sqlite3_step(statement) == SQLITE_ROW){

CMLoginRecord *loginRecord = [[CMLoginRecord alloc] init];

char *loginRecordKey = (char *)sqlite3_column_text(statement, 0);

if (loginRecordKey == NULL) {

loginRecord.accountname = nil;

}else {

NSString *_loginRecord = [[NSString alloc] initWithUTF8String:loginRecordKey];

loginRecord.accountname = _loginRecord;

}

char *lastlogintimeKey = (char *)sqlite3_column_text(statement, 1);

if (lastlogintimeKey == NULL) {

loginRecord.lastlogintime = nil;

}else {

NSString *_lastlogintime = [[NSString alloc] initWithUTF8String:lastlogintimeKey];

loginRecord.lastlogintime = _lastlogintime;

}

int logincount = sqlite3_column_int(statement, 2);

loginRecord.logincount = @(logincount);

[array addObject:loginRecord];

}

sqlite3_finalize(statement);

}

sqlite3_close(database);

return array;

}

// 插入个人信息

- (NSInteger)insertPersonl:(NSMutableArray *)array{

BOOL isInsertSuccess = NO;

// 打不开的话,就关闭

if(sqlite3_open([[self insertDBFilePath] UTF8String],&database) !=SQLITE_OK){

sqlite3_close(database);

return 1;

}

char *insert = "insert into zAccount(zaccountname,zlastlogintime,zlogincount) values(?,?,?);";// 要记住分号

for (CMLoginRecord *loginRecord in array) {

sqlite3_stmt *stmt;

if(sqlite3_prepare_v2(database,insert,-1,&stmt,nil) == SQLITE_OK){

sqlite3_bind_text(stmt, 1, [loginRecord.accountname UTF8String],-1,NULL);

sqlite3_bind_text(stmt, 2, [loginRecord.lastlogintime UTF8String],-1,NULL);

sqlite3_bind_int(stmt, 3, [loginRecord.logincount intValue]);

}

if(sqlite3_step(stmt)!= SQLITE_DONE){

NSLog(@"Error insert data into zLoginRecord error !");

}else{

//删除原来的数据库

isInsertSuccess = YES;

}

sqlite3_finalize(stmt);

}

sqlite3_close(database);

if (isInsertSuccess) {

NSString *path = [self dataFilePath];

NSFileManager *fileManager = [NSFileManager defaultManager];

if ([fileManager fileExistsAtPath:path]) {

[fileManager removeItemAtPath:path error:nil];

}

NSLog(@"删除原来的数据库");

}

return 0;

}

SQLite常用语句的更多相关文章

  1. Sqlite常用sql语句

    sqlite常用sql语句 --返回UTC时间 select CURRENT_TIMESTAMP; --返回本地时间 select datetime(CURRENT_TIMESTAMP,'localt ...

  2. iOS开发数据库篇—SQLite常用的函数

    iOS开发数据库篇—SQLite常用的函数 一.简单说明 1.打开数据库 int sqlite3_open( const char *filename,   // 数据库的文件路径 sqlite3 * ...

  3. ORM数据库框架 SQLite 常用数据库框架比较 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  4. Sqlite 常用函数推荐

    Sqlite 常用函数 1 .打开数据库: 说明:打开一个数据库,文件名不一定要存在,如果此文件不存在, sqlite 会自动创建.第一个参数指文件名,第二个参数则是定义的 sqlite3 ** 结构 ...

  5. sqlite常用的命令-增删改查

    一.查看版本信息: #sqlite3 -version 二.sqlite3常用命令 1.当前目录下建立或打开test.db数据库文件,并进入sqlite命令终端,以sqlite>前缀标识: 2. ...

  6. SQLite 常用函数

    SQLite 常用函数 参考: SQLite 常用函数 | 菜鸟教程http://www.runoob.com/sqlite/sqlite-functions.html SQLite 常用函数 SQL ...

  7. sqlmap选项卡介绍及常用语句

    sqlmap的使用方式:python sqlmap.py [options]: sqlmap中一共有以下十六个选项卡: 1.帮助选项卡: 2.Target(目标选项卡): 3.Request(请求选项 ...

  8. SQLite入门语句之HAVING和DISTINCT

    一.SQLite入门语句之HAVING HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果. WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建 ...

  9. SQL server 常用语句

    SQL Server中常用的SQL语句   1.概述 2.查询概述 3.单表查询 4.连接查询 5.带有exists的相关子查询 6.SQL的集合操作 7.插入操作 8.删除操作 9.修改操作 10. ...

随机推荐

  1. PR视屏剪切

    一款常用的视频编辑软件,由Adobe公司推出.现在常用的有CS4.CS5.CS6.CC.CC 2014及CC 2015版本.是一款编辑画面质量比较好的软件,有较好的兼容性,且可以与Adobe公司推出的 ...

  2. C#使用QQ邮箱发送邮件

    首先要开通QQ邮箱的STMP服务.QQ邮箱——设置——账户——开启SMTP服务. 需要引用: using System.Net; using System.Net.Mail; using System ...

  3. android view : 动画

    view中除了必要的移动之外,也可以使用动画来完善视觉效果.android中的动画在2.3之前只有帧动画和补间动画.3.0之后就加入了属性动画.其实说到动画是什么?就是一个连续的view的集合.帧动画 ...

  4. 第三个Sprint团队贡献分

    201306114322 邵家文 50分 201306114319 陈俊金 10分 201306114320 李新    10分 201306114324 朱浩龙 10分

  5. scikit-learn使用笔记与sign prediction简单小结

    经Edwin Chen的推荐,认识了scikit-learn这个非常强大的python机器学习工具包.这个帖子作为笔记.(其实都没有笔记的意义,因为他家文档做的太好了,不过还是为自己记记吧,为以后节省 ...

  6. 初用eclipse和svn遇见的问题以及解决方法

    第一次用eclipse 首先用SVN输入URI出现报错 去百度查了一下 大致就两点问题 1.防火墙的问题 2.SVN服务没开 我两个问题都不存在就去请教大神得到解决方案 解决方案:把URI的机器名改成 ...

  7. 用unity4.3发布WINDOWS STORE APP应用的方法

    http://www.cnblogs.com/suxsho/ 原创,转载请声明 ============================================================ ...

  8. oracle数据迁移、备份等

    exp db  或者数据泵. 或者ETL工具

  9. Codeforces Round #173 (Div. 2)

    A. Bit++ 模拟. B. Painting Eggs 贪心,每个物品给使差值较小的那个人,根据题目的约数条件,可证明贪心的正确性. C. XOR and OR \(,,00 \to 00,01 ...

  10. [java]wordcount程序

    词数统计系统. 作业解析:这次作业的内容是从本地读取一个程序代码,计算出这个程序中的行数,单词数,也可进行拓展. 实现语言:java 编程思路: 程序是由各种单词和符号组成的,单词包括关键字,标识符这 ...