zoukankan      html  css  js  c++  java
  • ios中Pldatabase的用法

    将PLDATABASE加入到工程
    下载PLDatabase 的dmg文件
    将PLDatabase的framework复制到工程根目录在工程中加入该framework使用该framework进行数据库操作
    
    
    将PLDATABASE加入到工程
    下载PLDatabase 的dmg文件
    将PLDatabase的framework复制到工程根目录在工程中加入该framework使用该framework进行数据库操作
    
    
    加入API库
    在项目中点击Add > Existing Frameworks,然后选择iphoneSimulatorx.x.sdk/usr/lib/libsqlite3.0.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

  • 相关阅读:
    全面认识golang string
    解决Manjaro Linux无法安装搜狗拼音
    解决QTableWidget不显示数据的问题
    在go modules中使用replace替换无法直接获取的package(golang.org/x/...)
    在go modules里使用go get进行包管理
    golang包管理解决之道——go modules初探
    反爬虫——使用chrome headless时一些需要注意的细节
    golang使用chrome headless获取网页内容
    <强化学习>开门帖
    <老古董>1992年之后的非线性支持向量机解法
  • 原文地址:https://www.cnblogs.com/gcb999/p/3192942.html
Copyright © 2011-2022 走看看