Swift使用FMDB操作SQLite

來源:互聯網
上載者:User

標籤:

  SQLite大家都懂的。本機資料庫,在行動裝置上使用廣泛。IOS平台上自然也少不了它。最近自己折騰一個小App的時候需要使用sqlite本機資料庫,上Github搜了下IOS下對SQLite的三方封裝有個星星很多的FMDB。不過是Obiect-C的庫,我是使用Swift的,本以為不能用了,不過後折騰了下發現在Swift下使用oc的庫非常簡單。下面我就介紹下如何在Swift下使用oc的FMDB庫。

  1.下載

  第一步自然是去下載FMDB了。https://github.com/ccgus/fmdb

  2.建立橋接

  把下載下來的zip解壓。開啟專案檔夾,找到fmdb檔案夾,把裡面所有的檔案選中,拖動到你的Swfit項目中。

 

  

  這時候XCode會自動提示你是否要建立橋接,選YES。XCode就會自動建立好oc到Swift的橋接了。

  

  接下來我們在Swift項目下找到一個叫做BabyLog-Bridging-Header的檔案,開啟編輯。在裡面輸入:#import "FMDB.h"

  

  這樣我們FMDB到Swift的橋接頭就建好了。

  3.使用

  有了橋接頭,我們就可以歡快的使用FMDB了。下面給出CURD的簡單一實例,不多說看代碼吧。

  擷取資料庫

  如果資料庫不存在則建立資料庫表,存在則返回資料庫物件。  

////  Db.swift//  BabyLog////  Created by mj.zhou on 15/3/4.//  Copyright (c) 2015年 mjstudio. All rights reserved.//import Foundationvar logs = [FeedLog]()class Db{        class func getDb()->FMDatabase{            let filemgr = NSFileManager.defaultManager()        let dirPaths =        NSSearchPathForDirectoriesInDomains(.DocumentDirectory,            .UserDomainMask, true)                let docsDir = dirPaths[0] as String                var databasePath = docsDir.stringByAppendingPathComponent("feedlog.db")                if !filemgr.fileExistsAtPath(databasePath) {                        let db = FMDatabase(path: databasePath)                        if db == nil {                println("Error: \(db.lastErrorMessage())")            }                        if db.open() {                let sql_stmt = "CREATE TABLE IF NOT EXISTS FEEDLOGS (ID TEXT PRIMARY KEY, COUNT INTEGER, TYPE INTEGER,LOGTIME DATETIME,LOGDAY TEXT, REMARK TEXT)"                if !db.executeStatements(sql_stmt) {                    println("Error: \(db.lastErrorMessage())")                }                db.close()            } else {                println("Error: \(db.lastErrorMessage())")            }        }                let feedlogDb = FMDatabase(path: databasePath)        return feedlogDb    }    }

  插入資料

 class func insert(log:FeedLog){                let sql="INSERT INTO FEEDLOGS (ID,COUNT,TYPE,LOGTIME,LOGDAY,REMARK) "+"VALUES (?,?,?,?,?,?)"        let db = Db.getDb()        db.open()        db.executeUpdate(sql, withArgumentsInArray: [log.id,log.count,log.type,log.logTime,log.logDay,log.remark])        db.close()    }

  更新資料

    class func update(log:FeedLog){                let sql = "UPDATE FEEDLOGS SET COUNT=?,TYPE=?,LOGTIME=?,LOGDAY=?,REMARK=? WHERE ID=?"        let db = Db.getDb()        db.open()        db.executeUpdate(sql, withArgumentsInArray: [log.count,log.type,log.logTime,log.logDay,log.remark,log.id])        db.close()    }

  刪除資料

    class func remove(id:String){        let sql = "DELETE FROM FEEDLOGS WHERE ID = ?"        let db = Db.getDb()        db.open()        db.executeUpdate(sql, withArgumentsInArray: [id])        db.close()    }

    查詢資料

    class func select(id:String)->FeedLog?{                let sql = "SELECT * FROM FEEDLOGS WHERE ID = ?"        let db = Db.getDb()        db.open()        let rs = db.executeQuery(sql, withArgumentsInArray: [id])        var log:FeedLog?=FeedLog()        while rs.next() {            log?.id=rs.stringForColumn("ID")            log?.count=Int(rs.intForColumn("COUNT"))            log?.type=Int(rs.intForColumn("TYPE"))            log?.remark=rs.stringForColumn("REMARK")            log?.logTime=rs.dateForColumn("LOGTIME")            log?.logDay=rs.stringForColumn("LOGDAY")        }        db.close()                return log    }

 

Swift使用FMDB操作SQLite

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.