// 错误存储路径

- (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. C语言指针,你还觉得难吗?

    在研究式学习-c语言程序设计指针式这样介绍的: 内存中存储变量的第一个单元的地址 称为指针,存放指针的变量称为指针变量: 变量的访问方式有: 直接访问方式:按变量名查找其首地址 间接访问方式:通过指针 ...

  2. svn客户端命令

    记几个常用的命令. 首次拉仓库时,先要进行检出(url可以带端口号): svn checkout http://svn.example.com:9834/repos svn checkout file ...

  3. haslayout

    什么是 haslayout ? haslayout 是Windows Internet Explorer渲染引擎的一个内部组成部分.在Internet Explorer中,一个元素要么自己对自身的内容 ...

  4. Dr.com──加密方式(网页端)

    Dr.com是城市热点公司开发的宽带计费系统,可以控制网络进行管理,认证,计费,限速……许多的高校与企业都有使用. 从接触到drcom就很感兴趣(原因想必大家都懂...) drcom登陆(认证)方式又 ...

  5. Implement Trie (Prefix Tree)

    Trie 树实现 Implement a trie with insert, search, and startsWith methods. class TrieNode { public: // I ...

  6. FreeBSD 配置

    FreeBSD 配置 1. FreeBSD源代码下载站点:

  7. Something about Wake-sleep

    DBN可以看做是n个RBM串联组成,是一个多层神经网络. 多层的好处是可以用较少的参数表示复杂的函数. 而一些传统的training算法如BP算法,处理多层网络时,效果就不是很理想.

  8. Struts2学习笔记(拦截器配置添加)

    一.拦截器工作原理: 根据Struts2的工作原理图,拦截器在action执行前进行顺序调用,之后执行Action并返回结果字符串,再逆序调用拦截器.(结构类似递归方式...)大部分时候,拦截器方法都 ...

  9. 页面加载完后自动执行一个方法的js代码

    1.在body中用onload: <body onload="conver()"> 2.在脚本中用window.onload: <script type=&quo ...

  10. python学习历程之split()方法获取cmd mysql 结果集

    if __name__=='__main__': FServerId = raw_input("Please input source id:") GetFileKey(FServ ...