[IOS SQLITE的使用方式]
1.把数据库文件localdata.db放入工程,并建立bundle(在build phases里)
2.创建新的类,用于本地SQLite查询. LocalDB.m(.h就不说了,保证每个.m里要外部调用的函数都在.h里做好接口就好)
3.LocalDB.m: createDB函数
因为工程里的Bundle文件无法直接使用(只能直接使用document里的文件),所以第一次使用sqlite文件要把它复制到document文件夹。
-(void)createDB{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    //该方法可用来显示DOCUMENT文件夹内的文件信息
    NSString *documents = [paths objectAtIndex:];
    database_path = [documents stringByAppendingPathComponent:DBNAME];//获取数据库文件的地址,不存在就会创建
    NSLog(@"数据库地址是:%@",database_path);
    //根据上面拼接好的路径 dbFilePath ,利用NSFileManager 类的对象的fileExistsAtPath方法来检测是否存在,返回一个BOOL值
    //1. 创建NSFileManager对象  NSFileManager包含了文件属性的方法
    NSFileManager *fm = [NSFileManager defaultManager];
    //2. 通过 NSFileManager 对象 fm 来判断文件是否存在,存在 返回YES  不存在返回NO
    BOOL isExist = [fm fileExistsAtPath:database_path];
    //NSLog(@"isExist =%d",isExist);
    //如果不存在 isExist = NO,拷贝工程里的数据库到Documents下
    if (!isExist)
    {
        //拷贝数据库
        //获取工程里,数据库的路径,因为我们已在工程中添加了数据库文件,所以我们要从工程里获取路径
        NSString *backupDbPath = [[NSBundle mainBundle]
                                  pathForResource:@"localdata"
                                  ofType:@"db"];
        BOOL cp = [fm copyItemAtPath:backupDbPath toPath:database_path error:nil];
        NSLog(@"找到Bundle文件:%@,已拷贝至Document",backupDbPath);
    }
    if (sqlite3_open([database_path UTF8String], &db) != SQLITE_OK) {
        sqlite3_close(db);
        NSLog(@"数据库打开失败");
    }
    sqlite3_close(db);
}
4.简单的查询语句(我建立了一个dbversion的table,然后字段为dbversion,值为1.0,用于以后的更新)
这是一个最简单的sqlite的查询语句用法。
-(NSString *)selectdbversion{
    NSString * version;
    if (sqlite3_open([self->database_path UTF8String], &db) == SQLITE_OK){
        NSString *sqlQuery =@"SELECT dbversion FROM dbversion";
        sqlite3_stmt * statement;
        if (sqlite3_prepare_v2(db, [sqlQuery UTF8String], -, &statement, nil) == SQLITE_OK) {
            while (sqlite3_step(statement) == SQLITE_ROW) {
                char *row0 = (char*)sqlite3_column_text(statement, );
                version = [[NSString alloc]initWithUTF8String:row0];
            }
        }else
        {
            NSLog( @"Failed from sqlite3_prepare_v2. Error is:  %s", sqlite3_errmsg(db) );
        }
    }
    return version;
}
5.外部调用方式:
实例化localDB对象就可以了。
LocalDB *newdb=[LocalDB alloc];
[newdb createDB];
NSString *version=[newdb selectdbversion];
NSLog(@"%@",version);
[IOS SQLITE的使用方式]的更多相关文章
- iOS常用的加密方式--备用
		MD5 iOS代码加密 创建MD5类,代码如下 #import <Foundation/Foundation.h> @interface CJMD5 : NSObject +(NSStri ... 
- iOS学习——iOS常用的存储方式
		不管是在iOS还是Android开发过程中,我们都经常性地需要存储一些状态和数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.根据要存储的的数据的大小.存储性质以及存储类型,在iOS和An ... 
- iOS常用的加密方式
		MD5 iOS代码加密 创建MD5类,代码如下 #import <Foundation/Foundation.h> @interface CJMD5 : NSObject +(NSStri ... 
- iOS 应用数据存储方式(XML属性列表-plist)
		iOS 应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) ... 
- iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)
		iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存 ... 
- iOS开发UI篇—ios应用数据存储方式(偏好设置)
		iOS开发UI篇—ios应用数据存储方式(偏好设置) 一.简单介绍 很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能 每个应用 ... 
- iOS开发UI篇—ios应用数据存储方式(归档)
		iOS开发UI篇—ios应用数据存储方式(归档) 一.简单说明 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦: 偏好设置(将所有的东西都保存在同 ... 
- iOS 中的加密方式
		iOS 中的加密方式 1 加密方式主要有: Base64,MD5,RSA,DES,AES,钥匙串存储,Cookie 2 各加密方式的比较 2.1 Base64 2.1.1 基本原理:采用64个基本的 ... 
- iOS  sqlite数据库实现(转)
		转载自:http://www.cnblogs.com/macroxu-1982/archive/2012/10/01/2709960.html 1 实现过程添加libsqlite3组件 选择项目后,在 ... 
随机推荐
- RDLC系列之五 初试XAML
			本章只讲解xaml部分,其余都和winform下一样 1.xaml代码 <Window x:Class="RDLC.WPF.MainWindow" xmlns="h ... 
- usb驱动开发6之端点描述符
			学到这里不容易,先说一段故事吧. 二兄弟住一大楼的第80层,某深夜回家忘看通知(内容今夜停电). 兄弟俩背着沉重的大背包,在楼底下商量一下,决定一鼓作气,爬楼梯回家.两人抖擞精神,开始爬楼.爬到20楼 ... 
- android camera setParameters failed 类问题分析总结
			在 monkey test 测试中出现了一例 RuntimeException ,即 setParameters failed. LOG显示为:09-01 18:47:17.348 15656 156 ... 
- 跳台阶 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
			class Solution { public: int jumpFloor(int number) { ) ; ) ; )+jumpFloor(number-); } }; 如果先建立数组,然后利用 ... 
- C语言 文件操作4--文件结构体FILE的理解以及缓冲区再讲
			//文件结构体FILE的理解以及缓冲区再讲 #include<stdio.h> #include<stdlib.h> //要点:文件结构 //struct _iobuf { / ... 
- C#中的默认访问修饰符
			1.命名空间下的元素的默认访问修饰符 public : 同一程序集的其他任何代码或引用该程序集的其他程序集都可以访问该类型或成员.internal : 同一程序集中的任何代码都可以访问该类型或成员,但 ... 
- MySQL基础 - 如何系统地学习数据库?
			对于数据库的认知,除了大学的时候上过数据库这门课,留下的印象大概就是几条SQL语句一些模棱两可的基本概念,直到工作后面临使用场景才发现数据库的重要性.故归纳总结一下自己的数据库学习之路. 学习资源: ... 
- flask 使用 SQLAlchemy 的两种方式
			1. 使用 flask-SQLAlchemy 扩展 # flask-ext-sqlalchemy.py from flask import Flask from flask.ext.sqlalchem ... 
- Android调用基于.net的WebService
			在实际开发项目中,有时候会为Android开发团队提供一些接口,一般是以asmx文件的方式来承载.而公布出去的数据一般上都是标准的json数据.但是在实际过程中,发现Android团队那边并不是通过将 ... 
- Linux第六次学习笔记
			存储器层次结构 存储器系统是一个具有不同容量.成本和访问时间的存储设备的层次结构. CPU寄存器保存着最常用的数据. 主存储器(简称主存)暂时存放存储在容量较大的.慢速磁盘上的数据. 高速缓存存储器作 ... 
