zoukankan      html  css  js  c++  java
  • Swift使用FMDB操作SQLite

      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 Foundation
    
    var 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
        }
  • 相关阅读:
    【Python】表白代码
    有关加密技术的概述,黑客是如何破解加密数据?
    Kali Linux的发展史,专为数字取证和渗透测试而设计
    在Wi-Fi路由器中发现了新的安全漏洞
    太可怕!看看黑客是怎样利用社会工程学窃取你的密码?
    不可不知!未来警惕被黑客植入微芯片
    什么是计算机漏洞,为什么会有漏洞呢?
    揭秘人工智能将如何影响今天的工作
    Linux为程序员添加了行为准则
    不可不知!4种常见的黑客攻击手段
  • 原文地址:https://www.cnblogs.com/kklldog/p/swift-fmdb.html
Copyright © 2011-2022 走看看