微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

第三方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=[[PLsqliteDatabasealloc]initWithPath:@"/path/to/database"];
  2. if(![dbopen])
  3. NSLog(@"Couldnotopendatabase");

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

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

  1. if(![dbexecuteUpdate:@"CREATETABLEexample(idINTEGER)"])
  2. NSLog(@"TablecreationFailed");
  3. if(![dbexecuteUpdate:@"INSERTINTOexample(id)VALUES(?)",[NSNumbernumberWithInteger:42]])
  4. NSLog(@"DatainsertFailed");

查询操作

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

  1. id<PLResultSet>results=[dbexecuteQuery:@"SELECTidFROMexampleWHEREid=?",[NSNumbernumberWithInteger:42]];
  2. while([resultsnext]){
  3. NSLog(@"Valueofcolumnidis%d",[resultsintForColumn:@"id"]);
  4. }
  5. //如果没有关闭结果集不会导致内存泄漏,但会结果集会被保留直到下一次的查询
  6. [resultsclose];

执行准备

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=[dbprepareStatement:@"INSERTINTOtest(name,color)VALUES(:name,:color)"];
  3. //使用字典绑定参数
  4. NSMutableDictionary*parameters=[NSMutableDictionarydictionaryWithCapacity:2];
  5. [parameteRSSetobject:@"Widget"forKey:@"name"];
  6. [parameteRSSetobject:@"Blue"forKey:@"color"];
  7. [stmtbindParameterDictionary:parameters];
  8. //执行插入
  9. if([stmtexecuteUpdate]==NO)
  10. NSLog(@"INSERTFailed");

原文地址:https://www.jb51.cc/sqlite/202685.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐