关于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文件存储的两种方式及读取方式. 以 ...
随机推荐
- VS2012 Build相关
最近写了一个小程序,用到了一些关于build方面的内容,google后,记录一下 1. VS工程下的bin和obj文件夹,bin文件夹下的debug和release文件夹,以及其中的文件 大家可以参考 ...
- 【转】Java多线程学习
来源:http://www.cnblogs.com/samzeng/p/3546084.html Java多线程学习总结--线程概述及创建线程的方式(1) 在Java开发中,多线程是很常用的,用得好的 ...
- maven常用插件配置详解
常用插件配置详解Java代码 <!-- 全局属性配置 --> <properties> <project.build.name>tools</proje ...
- innodb 悲观锁,乐观锁
转 http://www.cnblogs.com/chenwenbiao/archive/2012/06/06/2537508.html CREATE TABLE `products` ( `id` ...
- UVa 1213 (01背包变形) Sum of Different Primes
题意: 选择K个质数使它们的和为N,求总的方案数. 分析: 虽然知道推出来了转移方程, 但还是没把代码敲出来,可能基本功还是不够吧. d(i, j)表示i个素数的和为j的方案数,则 d(i, j) = ...
- 【 D3.js 高级系列 — 5.0 】 颜色
颜色是作图不可少的概念,常用的标准有 RGB 和 HSL,D3 提供了创建颜色对象的方法,能够相互转换和插值. RGB色彩模式是通过对红(Red).绿(Green).蓝(Blue)三个颜色通道相互叠加 ...
- Hibernate之QBC检索和本地SQL检索
QBC查询就是通过使用Hibernate提供的Query By Criteria API来查询对象,这种API封装了SQL语句的动态拼装,对查询提供了更加面向对象的功能接口 本地SQL查询来完善HQL ...
- Java序列化 如何把多个对象存储在一个文件中
/** * 用于保存模板文件,内容包括: * 1,标志位,1 int * 2,版本 1 int * 3,数据头长度 1 int * 4,预留数据头空间 5120 byte * 5,后续数据长度 ...
- JPEG最优压缩参数试验【光影魔术手VS Image Optimizer】
样本数量:100张(1MB-2.6MB)旅游照 样本大小:157MB 156.44 样本尺寸:3M(204 ...
- git和repo入门
版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作... 一.原始版本控制 最原始的版本控制是纯手工的版本控制:修改文 ...