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

swift开发笔记8 - sqlite3数据的使用(xcode 7,ios9)

由于考虑将来还要开发android版本app,为了移植方便,所以使用了sqlite3来做数据持久化,到时候把sql语句拷过去还能用。

1、 首先用xcode载入sqlite3类库

选择工程的TARGETS-build phases-link binary with libraries,点击“+”按钮,选择类库,点击“add”添加



(输入sql查找:)


2、 sqlite3是 c语言写的类库,所以还要引用他的头文件。在工程里新建一个文件,类型为“.h”文件,命名为:ProjectSecretary2-Bridging-Header.h ,这个文件就是桥接文件,然后在这文件里加一行代码

#import "sqlite3.h"


3、 然后告诉xcode编译时要引入这个类库头文件

在targets->build settings ->Object-C Bridging Header 输入头文件名即可,要注意的是

  • 找swift compiler时,要选择“ALL”和“Combined”,否则不好找。
  • 输入文件名时可能要加上文件路径,自己试试好了



4、 现在可以在代码里打开数据库了:

   
    let DBFILE_NAME = "psList.sqlite3"
    var db:copaquePointer = nil
    //获取sqlite3数据库文件位置
    func applicationDocumentsDirectoryFile() ->String {
        let  documentDirectory: NSArray = NSSearchPathForDirectoriesInDomains(.DocumentDirectory,.UserDomainMask,true)
        let path = documentDirectory[0].stringByAppendingPathComponent(DBFILE_NAME) as String
        NSLog("path : %@",path)
        return path
    }

    //创建一个系统配置表
    func getSysConfig()->Dictionary<String,String>{
        var theResult:Dictionary<String,String>=Dictionary<String,String>()
        let writableDBPath = self.applicationDocumentsDirectoryFile()
        let cpath = writableDBPath.cStringUsingEncoding(NSUTF8StringEncoding)
        
        if sqlite3_open(cpath!,&db) != sqlITE_OK {
            sqlite3_close(db)
            assert(false,"数据库打开失败。")
        } else {
            //创建一个系统参数配置表,有3个字段,分别是 名字、值和备注
            let sql = "CREATE TABLE IF NOT EXISTS  SysConfig (name TEXT PRIMARY KEY,value TEXT,comment TEXT)"
            let csql = sql.cStringUsingEncoding(NSUTF8StringEncoding)
            
            if (sqlite3_exec(db,csql!,nil,nil) != sqlITE_OK) {
                sqlite3_close(db)
                assert(false,"建表失败。")
            }
            sqlite3_close(db)
        }

        return theResult
    }
    

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

相关推荐