将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. [leetcode]Symmetric Tree @ Python

    原题地址:https://oj.leetcode.com/problems/symmetric-tree/ 题意:判断二叉树是否为对称的. Given a binary tree, check whe ...

  2. 操作系统重点双语阅读 - 上下文切换 Context Switch

    The context is represented in the PCB of the process. It includes the value of the CPU registers, th ...

  3. EF 数据类型 0xA7 的数据长度或元数据长度无效

    测试方法 TestProject1.SysTest.HtmlAnalysisTest12 引发异常:  System.Data.UpdateException: 更新项时出错.有关详细信息,请参阅“I ...

  4. javascript捕获事件event

    var e = e ? e : window.event; window.event ? window.event.cancelBubble = true : e.stopPropagation(); ...

  5. LintCode: Median of two Sorted Arrays

    求第k个值 1.归并排序 归并到第k个值为止 时间复杂度:O(k) class Solution { public: // merge-sort to find K-th value double h ...

  6. springboot整合mybatis的两种方式

    https://blog.csdn.net/qq_32719003/article/details/72123917 springboot通过java bean集成通用mapper的两种方式 前言:公 ...

  7. hadoop mahout 算法和API说明

    org.apache.mahout.cf.taste.hadoop.item.RecommenderJob.main(args) --input 偏好数据路径,文本文件.格式 userid\t ite ...

  8. Android学习笔记七:五大存储

    在Android中,可供选择的存储方式有SharedPreferences.文件存储.SQLite数据库方式.内容提供器(Content provider)和网络. 一.SharedPreferenc ...

  9. sqlserver 日志查看

    sqlserve的ErrorLog文件有时候会碰到文件很大的情况,可能通过命令xp_readerrorlog 或 sp_readerrorlog 执行,可以加搜索文本或起止时间 -- 日志查看 --e ...

  10. Java 实现的SnowFlake生成UUID (Java代码实战-007)

    SnowFlake所生成的ID一共分成四部分: 1.第一位占用1bit,其值始终是0,没有实际作用. 2.时间戳占用41bit,精确到毫秒,总共可以容纳约69 年的时间. 3.工作机器id占用10bi ...