将PLDATABASE加入到工程
下载PLDatabase 的dmg文件
将PLDatabase的framework复制到工程根目录在工程中加入该framework使用该framework进行数据库操作 将PLDATABASE加入到工程
下载PLDatabase 的dmg文件
将PLDatabase的framework复制到工程根目录在工程中加入该framework使用该framework进行数据库操作 加入API库
在项目中点击Add > Existing Frameworks,然后选择iphoneSimulatorx.x.sdk/usr/lib/libsqlite3..dylib
在项目中点击Add > Existing Frameworks > ,谈后选择PlausibleDatabase.framework在我们自己的源文件头部加入:
#import <PlausibleDatabase/PlausibleDatabase.h>

iPhone开发 第三方SQLITE封装库Pldatabase是本文要介绍的内容,不多说,我们先来看内容。花了三周时间,把原来使用原生SqliteAPI写的代码都改成了PLSqliteDatabase的操作,下载解压后把framework导入到项目中. 项目中需要sqlite.dylib,不然无法链接成功.。

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

下面我翻译一下其最简单的入门知识,在项目过程中, 发现这些其实也够用, 但异常处理这些我还没引进来使用.

基本使用指南

创建一个链接

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

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

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

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

  1. if (![db executeUpdate: @"CREATE TABLE example (id INTEGER)"])
  2. NSLog(@"Table creation failed");
  3. if (![db executeUpdate: @"INSERT INTO example (id) VALUES (?)", [NSNumber numberWithInteger: 42]])
  4. NSLog(@"Data insert failed");
  5. if (![db executeUpdate: @"CREATE TABLE example (id INTEGER)"])
  6. NSLog(@"Table creation failed");
  7. if (![db executeUpdate: @"INSERT INTO example (id) VALUES (?)", [NSNumber numberWithInteger: 42]])
  8. NSLog(@"Data insert failed");

查询操作

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

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

执行准备

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

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

基于命名参数的绑定

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

用法如下:

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

小结:详解第三方SQLITE封装库Pldatabase的内容介绍完了,关于PLDatabase的基本操作也完了. 希望本文对你有所帮助。

原文地址:http://mobile.51cto.com/iphone-278347.htm

ios中Pldatabase的用法的更多相关文章

  1. ios中Pldatabase的用法(3)

    #import "ViewController.h" @interface ViewController () @property(nonatomic,retain)PLSqlit ...

  2. ios中Pldatabase的用法(4)

    封装成DAO@implementation SqlHelper +(BOOL)InsertSql:(NSString *)sql paramet:(NSMutableDictionary *)parm ...

  3. ios中Pldatabase的用法(2)

    @implementation AppGlobal static NSString* strHostName; static NSString* strVersion; static PLSqlite ...

  4. iOS中block的用法 以及和函数用法的区别

    ios中block的用法和函数的用法大致相同 但是block的用法的灵活性更高: 不带参数的block: void ^(MyBlock)() = ^{}; 调用的时候  MyBlock(); 带参数的 ...

  5. iOS中Block的用法,举例,解析与底层原理(这可能是最详细的Block解析)

    1. 前言 Block:带有自动变量(局部变量)的匿名函数.它是C语言的扩充功能.之所以是拓展,是因为C语言不允许存在这样匿名函数. 1.1 匿名函数 匿名函数是指不带函数名称函数.C语言中,函数是怎 ...

  6. ios中图片拉伸用法

    - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCap ...

  7. iOS中的CocoaPods用法及常用命令

     CocoaPods是什么? ***CocoaPods的使用场景:*** 1. 当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等.可能某个类库又用 ...

  8. iOS中NSScanner 的用法

    NSScanner是一个类,用于在字符串中扫描指定的字符,尤其是把它们翻译/转换为数字和别的字符串.可以创建NSScanner时制定他的String属性,然后scanner会按照你的要求从头到尾扫描这 ...

  9. IOS中NSUserDefaults的用法(轻量级本地数据存储)

    NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的,个人觉得使用NSUserDefaults是首选.下次再登陆的时候就可以直接从NSUserDefa ...

随机推荐

  1. go语言之进阶篇方法表达式

    1.方法表达式 示例: package main import "fmt" type Person struct { name string //名字 sex byte //性别, ...

  2. 基于ZigBee和STM32的智能家居控制系统的设计与实现(三)

    基于ZigBee和STM32的智能家居控制系统的设计与实现(三) 自从前两篇博客介绍了智能家居系统的基本实现机理后,收到了好多朋友的来信,和我讨论了好多的这方面的知识,在此很高兴,虽然自己做的这个所谓 ...

  3. VS2010 SP1安装失败之”此计算机的状态不支持此安装“()

    升级安装VS2010SP1的时候,出现“此计算机的状态不支持此安装”,Google得之: 如下图显示: 安装程序已经检测到,此计算机不满足安装此软件所需的条件.必须先解决以下这些造成阻止的问题,才可以 ...

  4. Backbone.js 中使用 Model

    前面几篇 Backbone.js 的例子中有使用到 template, 及数据的填充,其实这已经很接近 Model 了.现在来学习怎么创建自己的 Model 类,并简单的使用.Backbone.js ...

  5. 将iPhone投影到Mac上

    将iPhone投影到Mac上 有时候, 出于演示须要, 又或者嫌弃iPhone屏幕太小了, 我想把画面弄到mac上. 这时候, 就须要将iPhone投影到Mac上. 至于怎样做呢? 这就是本文要说明的 ...

  6. Create root user on MongoDB

      db.createUser( { user: "user", pwd: "pass", roles: [ "root" ] } );   ...

  7. mysql 批量数据循环插入

    双重循环插入 DELIMITER ;; CREATE PROCEDURE test_insert() BEGIN DECLARE a INT DEFAULT 1; DECLARE b TINYINT ...

  8. WIN10系统如何使用传统WIN7开始菜单

    安装StartlsBack 默认按WIN键就可以回到WIN7的菜单了 右击WIN可以点击属性,详细设置菜单样式

  9. IIS 7 及以上 IIS错误页“编辑功能设置...”提示“锁定冲突”

    原因是全局的设置锁定了此项,不让修改. 解决方法如下:

  10. MVC 之 缓存机制(一)

    一.概述 缓存是将信息(数据或页面)放在内存中以避免频繁的数据库存储或执行整个页面的生命周期,直到缓存的信息过期或依赖变更才再次从数据库中读取数据或重新执行页面的生命周期.在系统优化过程中,缓存是比较 ...