SQLite常用语句
// 错误存储路径
- (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常用语句的更多相关文章
- Sqlite常用sql语句
sqlite常用sql语句 --返回UTC时间 select CURRENT_TIMESTAMP; --返回本地时间 select datetime(CURRENT_TIMESTAMP,'localt ...
- iOS开发数据库篇—SQLite常用的函数
iOS开发数据库篇—SQLite常用的函数 一.简单说明 1.打开数据库 int sqlite3_open( const char *filename, // 数据库的文件路径 sqlite3 * ...
- ORM数据库框架 SQLite 常用数据库框架比较 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Sqlite 常用函数推荐
Sqlite 常用函数 1 .打开数据库: 说明:打开一个数据库,文件名不一定要存在,如果此文件不存在, sqlite 会自动创建.第一个参数指文件名,第二个参数则是定义的 sqlite3 ** 结构 ...
- sqlite常用的命令-增删改查
一.查看版本信息: #sqlite3 -version 二.sqlite3常用命令 1.当前目录下建立或打开test.db数据库文件,并进入sqlite命令终端,以sqlite>前缀标识: 2. ...
- SQLite 常用函数
SQLite 常用函数 参考: SQLite 常用函数 | 菜鸟教程http://www.runoob.com/sqlite/sqlite-functions.html SQLite 常用函数 SQL ...
- sqlmap选项卡介绍及常用语句
sqlmap的使用方式:python sqlmap.py [options]: sqlmap中一共有以下十六个选项卡: 1.帮助选项卡: 2.Target(目标选项卡): 3.Request(请求选项 ...
- SQLite入门语句之HAVING和DISTINCT
一.SQLite入门语句之HAVING HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果. WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建 ...
- SQL server 常用语句
SQL Server中常用的SQL语句 1.概述 2.查询概述 3.单表查询 4.连接查询 5.带有exists的相关子查询 6.SQL的集合操作 7.插入操作 8.删除操作 9.修改操作 10. ...
随机推荐
- win764位Ruby2.0环境搭建之Ruby on Rails
一:安装Ruby 1.在http://rubyinstaller.org 下载需要的ruby版本,因为是exe文件,所以,你可以直接安装. 安装结束后,cmd上运行 ruby -v 显示版本号.如果正 ...
- web前端性能14条规则
14条规则 1.减少Http请求 使用图片地图 使用CSS Sprites 合并JS和CSS文件 这个是由于浏览器对同一个host有并行下载的限制,http请求越多,总体下载速度越慢 2.使用CDN( ...
- Guid与id区别
一.产生Guid的方法 1.SqlServer中使用系统自带的NEWID函数: select NEWID() 2.C#中,使用Guid类型的NewGuid方法: Guid gid; ...
- NSUserDefaults
一.了解NSUserDefaults以及它可以直接存储的类型二.使用 NSUserDefaults 存储自定义对象1.将自定义类型转换为NSData类型2.将自定义类型数据存入 NSUserDefau ...
- js 判断浏览器的类型
function getBrowser() { var Sys = {}; var ua = navigator.userAgent.toLowerCase(); var s; ...
- php判断json对象是否存在的方法
在实际测试中php读取json数组时 使用简单的 if 或者 array_key_exists 去判断对象是否存在是会报错的,以下是google搜寻的正确判断方法 实际上出现报错只是我对php还不是很 ...
- MFC中输入框的文本转换为char[]字符数组类型
在MFC的输入框中得到输入字符串用如下形式: CString v_inputstring; (( CEdit *) GetDlgItem (IDC_EDIT1 ))-> GetWindowTex ...
- 计算机网络自学之路------IP协议(1)
1)TCP/IP模型与OSI对应 2)TCP/IP集每层主要协议 3)IP协议 4)IP地址的命名与使用 5)子网与子网掩码 1)TCP/IP模型与OSI对应关系 我们看到,TCP/IP只有四层与OS ...
- Tomcat 在mac中Operation not permitted
5.执行/Library/Tomcat/bin下的startup.sh,然后打开http://localhost:8080查看是否Tomcat已经启动,若要停止服务器就运行同目录下的shutdown. ...
- redis学习
wget http://labfile.oss.aliyuncs.com/files0422/redis-2.8.9.tar.gz .tar.gz cd redis- make make instal ...