// 错误存储路径

- (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. PowerDesigner自增列问题

  2. php实现的笛卡儿积

    之前在网上找到一个大牛写的版本(网址已经记不得了..),如下 function Descartes1() { //Cartesian product of arrays or strings or s ...

  3. 系统弹性概念[TODO]

    系统弹性 Shopify构建分布式可扩展应用的最佳实践 [编者的话]在构建大型分布式系统应用时,如何降低不同部分之间的依赖,增强系统的弹性,电商解决方案提供商 Shopify 给出了解决方法. 弹性矩 ...

  4. IIS错误:在唯一密钥属性 fileExtension=".url"时,无法添加类型为“mimeMap”的重复集合项

    代码可以运行,但没有加载上样式,后来在IIS点击MIME类型时报错了 查看web.config中 <staticContent> <mimeMap fileExtension=&qu ...

  5. 各数据库查询前N条记录的SQL语句

    sql在不同数据库查询前几条数据 1. ORACLE SELECT * FROM TABLE_NAME WHERE ROWNUM <= N;  HQL: from table_name t or ...

  6. php查询文件扩展名

    //查询文件扩展名 function extension($str){ $str = implode("",explode("\\",$str)); $str ...

  7. mysql 与 mycat集成读写分离

    1,先说下同步数据库原理,其实很简单.就是在主库做数据库操作的时候,会生成一个本地日志,日志会在my.ini当中配置看图一,读库会实时去扫描日志,如果有更新就直接在读库执行. 这个是主库my.ini配 ...

  8. python之目录文件操作

    [1.os] 1.重命名:os.rename(old, new) 2.删除:os.remove(file) 3.列出目录下的文件 :os.listdir(path) 4.获取当前工作目录:os.get ...

  9. Java JDK配置环境变量

    JDK的配置环境变量. 1.下载JDK,然后安装(点下一步). 2.右键单击  "计算机" ,选择  "属性".   3.单击 "高级系统设置&quo ...

  10. java_SE(Day15)_集合1

    一.集合类概述: 1.为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,Java就提供了集合类. 2.数组和集合类同是容器,有何不同? 数组虽然也可以存储对象 ...