第三方SQLITE封装库pldatabase的介绍

源自:http://aminby.net/2010/08/iphone-sqlite-pldatabase-introduce/

引文

花了三周时间,把原来使用原生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");  

查询操作

执行查询操作可以使用 -[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];  

执行准备

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");

基于命名参数的绑定

当参数很多的时候, 能过命名参数绑定的可读性强很多
用法如下:

  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");  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值