第三方SQLITE打包库pldatabase的介绍

1. 怎么导入PlausibleDatabase.framework框架

先下载PlausibleDatabase.framework框架包,然后把该包直接加入到库中,然后再加入#import <PlausibleDatabase/PlausibleDatabase.h>头文件

下载地址:http://code.google.com/p/pldatabase/ 在这里可以下载和查看文档和代码.

第三方SQLITE封装库Pldatabase

基本使用指南

创建一个链接

为存在数据库文件打开一个链接:

PLSqliteDatabase *db = [[PLSqliteDatabase alloc] initWithPath:  @"/path/to/database"];
if (![db open])
    NSLog(@"Could not open database"); 

更新操作(即没有返回记录集)

更新操作可以使用 -[PLDatabase executeUpdate:]

if (![db executeUpdate: @"CREATE TABLE example (id INTEGER)"])
    NSLog(@"Table creation failed");
if (![db executeUpdate: @"INSERT INTO example (id) VALUES (?)", [NSNumber numberWithInteger: 42]])
    NSLog(@"Data insert failed");  

查询操作

执行查询操作可以使用 -[PLDatabase executeQuery:]. 该操作返回结果集是一个对象为PLResult的NSObject实例.使用方法如下

id<PLResultSet> results = [db executeQuery: @"SELECT id FROM example WHERE id = ?", [NSNumber numberWithInteger: 42]];
while ([results next]) {
    NSLog(@"Value of column id is %d", [results intForColumn: @"id"]);
}
// 如果没有关闭结果集不会导致内存泄漏, 但会结果集会被保留直到下一次的查询
[results close];  

执行准备

PLPreparedStatement支持SQL操作的预编译和参数优先绑定. 执行准备的操作可以调用:-[PLDatabase prepareStatement:].

id<PLPreparedStatemet> stmt = [db prepareStatement: @"INSERT INTO example (name, color) VALUES (?, ?)"];
 // 绑定参数
 [stmt bindParameters: [NSArray arrayWithObjects: @"Widget", @"Blue", nil]];
 // 执行插入
 if ([stmt executeUpdate] == NO)
     NSLog(@"INSERT failed");

基于命名参数的绑定

当参数很多的时候, 能过命名参数绑定的可读性强很多

用法如下:

// 准备
id<PLPreparedStatement> stmt = [db prepareStatement: @"INSERT INTO test (name, color) VALUES (:name, :color)"];
// 使用字典绑定参数
NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithCapacity: 2];
[parameters setObject: @"Widget" forKey: @"name"];
[parameters setObject: @"Blue" forKey: @"color"];
[stmt bindParameterDictionary: parameters];
// 执行插入
if ([stmt executeUpdate] == NO)
    NSLog(@"INSERT failed");  

连接sqlite数据库的代码

下面的代码其实满简单的,简单介绍一下怎么样在iphone代码中连接sqlite数据库。在此之前,要引入PlausibleDatabase.framework和libsqlite3.dylib文件。

下面的是database.h头文件:

#import
<Foundation/Foundation.h>

#import
<PlausibleDatabase/PlausibleDatabase.h>

@interface DataBase :
NSObject {

}

+ (PLSqliteDatabase *) setup;

+ (void) close;

@end

下面为database.m文件:

#import
"DataBase.h"

#import
<PlausibleDatabase/PlausibleDatabase.h>

static
PLSqliteDatabase * dbPointer;

@implementation DataBase

//单例

+ (PLSqliteDatabase *) setup{

if (dbPointer)
{

return
dbPointer;

}

NSLog(@"%@",NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES));

NSString *documentPath
= [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES)
objectAtIndex:0];

NSString *realPath = [documentPath
stringByAppendingPathComponent:@"book.sqlite"];

NSString *sourcePath
= [[NSBundle
mainBundle]
pathForResource:@"Book"
ofType:@"sqlite"];

NSFileManager *fileManager = [NSFileManager
defaultManager];

if (![fileManager
fileExistsAtPath:realPath]) {

NSError *error;

if (![fileManager
copyItemAtPath:sourcePath
toPath:realPath error:&error]) {

NSLog(@"%@",[error
localizedDescription]);

}

}

NSLog(@"复制sqlite到路径:%@成功。",realPath);

//把dbpointer地址修改为可修改的realPath。

dbPointer = [[PLSqliteDatabase
alloc] initWithPath:realPath];

[dbPointer
open];

return
dbPointer;

}

+ (void) close{

if (dbPointer)
{

[dbPointer
close];

dbPointer =
NULL;

}

}

@end

代码的调用如下的例子:

+ (NSArray *) findAll{

PLSqliteDatabase *dataBase = [DataBase setup];

id<PLResultSet>rs;

rs = [dataBase executeQuery:@"SELECT *FROM Book"];

//定义一个数组存放所有书籍的信息

NSMutableArray *books = [[NSMutableArray alloc]init];

//把rs中的数据库信息遍历到books数组中

while ([rs next]) {

NSString *ID = [rs objectForColumn:@"ID"];

NSString *name = [rs objectForColumn:@"Name"];

NSString *author = [rs objectForColumn:@"Author"];

NSString *publishHouse = [rs objectForColumn:@"PublishHouse"];

NSString *date = [rs objectForColumn:@"Date"];

NSString *briefIntroducation = [rs objectForColumn:@"BriefIntroducation"];

//初始化book存放到books里面

Book *book = [[Book alloc]initWithID:ID name:name publishHouse:publishHouse author:author briefIntroducation:briefIntroducation date:date];

[books addObject:book];

}

[rs close];

return books;

}

第三方SQLITE打包库pldatabase的介绍

时间: 2024-08-16 17:36:23

第三方SQLITE打包库pldatabase的介绍的相关文章

第三方苹果开发库之ASIHTTPRequest(翻译版)

本文转载至 http://www.cnblogs.com/daguo/archive/2012/08/03/2622090.html 来自:http://www.dreamingwish.com/dream-2011/apples-third-party-development-libraries-asihttprequest.html 第三方苹果开发库之ASIHTTPRequest ASIHttpRequest库简介.配置和安装 ASIHttpRequest-创建和执行request ASIH

swift中第三方网络请求库Alamofire的安装与使用

swift中第三方网络请求库Alamofire的安装与使用 Alamofire是swift中一个比较流行的网络请求库:https://github.com/Alamofire/Alamofire.下面我们就介绍一个这个库的安装与使用. 一.安装包管理工具CocoaPods 由于国内容易被墙,速度也非常的慢,这里我们使用提供的源 http://ruby.taobao.org/ gem sources --remove https://rubygems.org/ gem sources –a htt

EasyDarwin开源流媒体服务器提供的TS切片/HLS直播打包库

EasyHLS EasyHLS是什么? EasyHLS是EasyDarwin开源流媒体社区开发的一款HLS打包库,接口非常简单,只需要传入打包的文件名.切片存放的目录.打包间隔以及切片数,EasyHLS库就能轻松将H264+AAC的流媒体切片,提供给WEB服务器进行HLS流媒体发布,我们提供了两套操作示例: EasyHLS_RTSP:以RTSPClient的形式,从RTSP URL将摄像机音视频获取到本地,进行HLS打包: EasyHLS_SDK:将SDK回调的数据进行HLS打包切片,示例中的S

SQLite数据库和JPA简单介绍

SQLite数据库和JPA简单介绍 一.SQLite简单使用 SQLite是遵循ACID的关系数据库管理系统,它的处理速度很快,它的设计目标是嵌入式的,只需要几百K的内存就可以了. 1.下载SQLitehttp://www.sqlite.org/download.htmlsqlite-dll-win32-x86-201410071659.zip(294.11 KiB)sqlite-shell-win32-x86-3080600.zip解压在文件夹D:\Database\sqlite下,得到文件s

(原创)sqlite封装库SmartDB1.3发布

最近终于稍微有点空对SmartDB进行升级了,SmartDB1.3比之前的版本做了简化,增强了易用性和灵活性. SmartDB对sqlite做了一层封装,屏蔽了诸多细节,使得我们使用起来很方便.在注重易用性的基础上还兼顾了性能和灵活性. 易用性 接口很简单,基本接口有如下几个: void Open(const string& fileName); bool Close(); //数据库操作接口 template <typename... Args> bool Excecute(cons

Oracle JET 使用RequireJS第三方工具或库引入

在 Oracle JET 应用程序中使用 RequireJS 添加第三方工具或库. 步骤: 1.如果使用工具框架脚手架,需要一下操作. a.使用 npm 安装你需要的库. npm install my-library --save b.在 script/grunt/config 目录中,在 oraclejet-build.js 中找到 copyCustomLibsToStaging 更新代码. 把注释去掉.并更改: copyCustomLibsToStaging: { fileList: [ {

【转帖】noisex92噪声库各种噪声介绍

noisex92噪声库各种噪声介绍 File: Matlab or WAV formats (compressed) sampling rate: 19.98 KHz A/D: 16 bit pre-filter: anti-aliasing filter pre-emphasis: none filter: none duration: 235 sec length (uncompressed): approx 9 Mb (uncompressed) 白噪声:White noise White

Hibernate jar库的简单介绍

1.antlr   --ANTLR (ANother Tool for Language Recognition)语法分析器,它提供一个包括 java,c#和C++在内的语法描述框架 Hibernate利用它实现HQL?到SQL的转换 错误情况: 项目中没有添加antlr-*.jar,hibernate不会执行hql语句    并且会报NoClassDefFoundError: antlr/ANTLRException错误 2.cglib  Hibernate用它来实现PO(project ob

7.19 wordcloud库的基本介绍

目录 7.19 wordcloud库的基本介绍 wordcloud概述 基本使用 常规方法 配置对象参数 mask参数详解 7.19 wordcloud库的基本介绍 wordcloud概述 词云以词语为基本单位,更加直观和艺术的展示文本 基本使用 wordcloud库把词云当作一个WordCloud对象 wordcloud.WordCloud()代表一个文本对应的词云 可以根据文本中词语出现的频率等参数绘制词云 绘制词云的形状.尺寸和颜色都可以设定 常规方法 以WordCloud对象为基础 配置