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) db.executeStatements(sql_stmt) { println() } db.close() } else { println() } } 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,51); font-weight:bold">log.type,51); font-weight:bold">log.logTime,51); font-weight:bold">log.logDay,51); font-weight:bold">log.remark]) db.close() } 更新数据 func update(log:FeedLog){
let sql = UPDATE FEEDLOGS SET COUNT=?,TYPE=?,LOGTIME=?,LOGDAY=?,REMARK=? WHERE ID=?log.remark,51); font-weight:bold">log.id])
db. 删除数据
查询数据class func select(id:String)->FeedLog?{ let sql = SELECT * FROM FEEDLOGS WHERE ID = ?open() let rs = db.executeQuery(sql,withArgumentsInArray: [id]) var log:FeedLog?=FeedLog() while rs.next() { log?.id=rs.stringForColumn(IDlog?.count=Int(rs.intForColumn(COUNT)) log?.type=Int(rs.intForColumn(TYPElog?.remark=rs.stringForColumn(REMARKlog?.logTime=rs.dateForColumn(LOGTIMElog?.logDay=rs.stringForColumn(LOGDAY) } db.close() log } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |