关于iOS中SQLITE句柄的使用的细节
1、设计思想:给SQLITE进行封装,利用定义的类别实现方法的简洁,以便达到低耦合效果
控制器代码:
#import "ViewController.h"
#import "DatabaseHelper.h" @interface ViewController ()
{
sqlite3 *db;
}
@end @implementation ViewController -(void)loadView { [super loadView];
self.view.backgroundColor = [UIColor orangeColor];
}
- (void)viewDidLoad {
[super viewDidLoad];
//PART1:该部分为实现的帮助类别
//PART1 .1
[DatabaseHelper openDatabaseWithName:@"personinfo.sqlite" withSqlite:db];
//PART1 .2
24 db =[DatabaseHelper openDatabaseWithName:@"personinfo.sqlite" withSqlite:db];
NSLog(@" isOpenOrCreat = %@",db ?@"sucess":@"failure");
26
//PART2:用以判断数据库是否打开
if (db) { } //PART3:用以判断数据库是否打开
[DatabaseHelper execSql:@"CREATE TABLE IF NOT EXISTS PERSONINFO (ID INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER, address TEXT)" withSqlite:db];
操作类代码:
#import "DatabaseHelper.h" @implementation DatabaseHelper
+(sqlite3 *)openDatabaseWithName:(NSString *)name withSqlite:(sqlite3 *)sqlite3{
//PART5:
//1、获取Documents文件路径
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
//2、拼接要建立的数据库文件路径
NSString *databasePath = [documentsPath stringByAppendingPathComponent:name];
//打印
NSLog(@"databasePath = %@",databasePath);
//判断是否已经打开(打开失败时关闭数据库并log提示)
if (sqlite3_open([databasePath UTF8String], &sqlite3) != SQLITE_OK) {
sqlite3_close(sqlite3);
NSLog(@"数据库打开失败");
return nil ;
} //PART4:
// char *err;
// NSString *sql = @"CREATE TABLE IF NOT EXISTS PERSONINFO (ID INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER, address TEXT)";
// if (sqlite3_exec(sqlite3, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {
// sqlite3_close(sqlite3);
// NSLog(@"数据库操作数据失败!");
// NSLog(@"%s ",err);
// } return sqlite3;
} +(BOOL)execSql:(NSString *)sql withSqlite:(sqlite3 *)sqlite3{
char *err;
//sqlite3_exec(), 执行非查询的sql语句
if (sqlite3_exec(sqlite3, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {
sqlite3_close(sqlite3);
NSLog(@"数据库操作数据失败!");
return NO;
}
return YES; }
关于iOS中SQLITE句柄的使用的细节的更多相关文章
- iOS 中SQLite数据库操作
在iOS中实现SQLite数据库的操作:1.导入框架(libsqlite3.0.tbd) 2.导入头文件<sqlite3.h> 3.实现数据的增删改查 实现简单 SQLite数据库操作 的 ...
- iOS中SQLite知识点总结1
数据库(SQLite) 01-数据库简介 1.什么是数据库 数据库(Database)是按照数据结构来组织,存储和管理数据的仓库 2.数据库的分类 关系型数据库(主流) PC端:Oracle/MySQ ...
- iOS中SQLite知识点总结2
数据库(SQLite) 01-多表查询 格式:select 字段1,字段2,... from 表名1,表名2; 别名:select 别名1.字段1 as 字段别名1,别名2.字段2 as 字段别名2, ...
- iOS中sqlite版本号
https://github.com/yapstudios/YapDatabase/wiki/SQLite-version-(bundled-with-OS) https://github.com/y ...
- ios 中sqlite的用法
#import <sqlite3.h> @interface ViewController () { sqlite3 *_sqldb; } @end @implementation Vie ...
- IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)
IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...
- ios中常见数据存储方式以及SQLite常用的语句
在iOS中,根据不同的需求对应的有多种数据存储方式: 1.NSUserdefaults 将数据存储到沙盒中(library),方便易用,但是只能存储系统提供的数据类型(plist),不能存储自定义的 ...
- QF——iOS中的数据库操作:SQLite数据库,第三方封装库FMDB,CoreData
SQLite数据库: SQLite是轻量级的数据库,适合应用在移动设备和小型设备上,它的优点是轻量,可移植性强.但它的缺点是它的API是用C写的,不是面向对象的.整体来说,操作起来比较麻烦.所以,一般 ...
- 在IOS中使用DES算法对Sqlite数据库进行内容加密存储并读取解密
在IOS中使用DES算法对Sqlite 数据库进行内容加密存储并读取解密 涉及知识点: 1.DES加密算法: 2.OC对Sqlite数据库的读写: 3.IOS APP文件存储的两种方式及读取方式. 以 ...
随机推荐
- 4418SPI2对应管脚位置
MCU_SPICLK2 MCU_SPITXD2 MCU_SPIFRM2 MCU_SPIRXD2
- EL表达式 JSTL中的常用EL函数 动态数据的国际化
ELppt: EL 全名为Expression Language.EL主要作用: 获取数据: •EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数据.( ...
- poi对wps excel的支持
今天在使用poi解析xls文件的时候出现了如下异常 Exception in thread"main"java.lang.RuntimeException: Expected an ...
- 十个免费的Web压力测试工具
两天,jnj在本站发布了<如何在低速率网络中测试 Web 应用>,那是测试网络不好的情况.而下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的W ...
- 记录遇到的IE8兼容性问题汇总
1,伪元素:first-child不起作用,需要单独指定样式名称 2,透明度表示方法,尤其在函数中表示 @mixin opacity($value) { -webkit-opacity: $value ...
- HAOI2007 理想的正方形
1047: [HAOI2007]理想的正方形 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1402 Solved: 738[Submit][Sta ...
- [转]vs2010 快捷键大全
vs2010 快捷键大全 VS2010版快捷键 Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + ...
- 说下 winOS / IOS / android /Linux 视频、音频 编码解码问题
最近有朋友遇到一个问题, ios 上传视频文件,想在本地压缩下,然后再上传到服务器. 问有没有什么 视频处理的库, 最近Khronos的webgl 支持HTML5 ,(原理 WebGL 是openGL ...
- HDU 5698 瞬间移动
瞬间移动 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submis ...
- JS注入操作页面对象
在用selenium webdriver 编写web页面的自动化测试代码时,有时对页面对象的操作需要通过js语句去执行,selenium本身就支持执行js,我们在代码中import org.openq ...