Swift开发之数据库SQLite实例详解

Home / iOS MrLee 2016-3-9 2643

一个稍微有点功能的APP都需要一个数据库来支撑。那么我们的Swift2.0怎么去操作Sqlite数据库呢?
这个Swift说起来是欢喜忧愁各占一半。为啥这么说呢?这得从它的语言说起,Swift才出来没多久,所以很多苹果很多功能都没有封装。虽然底层是支持的。比如说我们现在要用的SQLite,有3.0的支持库。但是人家是用C语言写的,你要用就自己封装和桥接。还好苹果开发的人比较多,已经有人封装好了。我们拿来用就行了。这里我简单测试下是没问题的。首先下载三个Swift文件和一个桥接的头文件。
头文件:
#import "sqlite3.h"
#import 

编译需要的。然后位置切记了。要放在工程的根目录,不然会提示找到不头文件(GITHUB上面貌似没有提到这点)。
第二步桥接在设置里面。看下图:

8255F821-8EC7-4067-BD4E-1F22FEAE8A74


第三步添SQLite3.0的库文件,如下图:

EB55F6B3-FB54-423D-9A2F-91094BD78734


OKAY,到了这里基本上就快完成喽!
第四步,把下载3个Swift文件添加到工程中,代码有点小多,我就不上传了。直接下载吧。 SQLiteDB
然后就可以正常调用啦。我写了一个简单的类来操作。源码:
//
//  Tools.swift
//  Textile
//
//  Created by leehom on 16/3/9.
//  Copyright © 2016年 fenjin.textile. All rights reserved.
//
import Foundation
let toolInstance = Tools()
class Tools: NSObject {
    
    //单例模式变量
    //class var sharedInstance:Tools{
    //    return toolInstance
    //}
    //单例模式方法
    class func sharedInstance()->Tools! {
        return toolInstance
    }
    
    var db:SQLiteDB!
    
    override init(){
        db = SQLiteDB.sharedInstance()
        db.execute("create table if not exists m_user(uid integer primary key,uname varchar(20),mobile varchar(20))")
    }
    
    internal func testUser(){
        //self.insertUser()
        self.selectUser()
    }
    
    internal func selectUser(){
        //读取数据
        let data = db.query("select * from m_user")
        if data.count > 0 {
            //获取最后一行数据显示
            let user = data[data.count - 1]
            let name = user["uname"] as! String
            let mobile = user["mobile"] as! String
            NSLog("%@-%@", name,mobile)
        }
    }
    
    internal func insertUser(){
        //插入一条数据
        let name = "ithtw"
        let mobile = "18888888888"
        //插入数据库,这里用到了esc字符编码函数,其实是调用bridge.m实现的
        let sql = "insert into m_user(uname,mobile) values('\(name)','\(mobile)')"
        print("sql: \(sql)")
        //通过封装的方法执行sql
        let result = db.execute(sql)
        print(result)
    }
}

刚学Swift不久,有错的地方请见谅!

本文链接:https://www.it72.com/7933.htm

推荐阅读
最新回复 (0)
返回