亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

---純Swift的中SQLite的使用

2019-11-14 19:27:01
字體:
來源:轉載
供稿:網友

SQLite.swift 是一個使用純 Swift 語言封裝 SQLite3 的操作框架。

特性:

  • 簡單的查詢和參數綁定接口 

  • 安全、自動類型數據訪問

  • 隱式提交和回滾接口

  • 開發者友好的錯誤處理和調試

  • 文檔完善

  • 通過廣泛測試  

示范代碼:

import Foundation/**    1. 打開數據庫    2. 如果沒有數據表,需要首先創表    3. 數據操作*/class SQLite {        var db: COpaquePointer = nil        ///  打開數據庫    ///    ///  :param: dbname 數據庫名稱    ///    ///  :returns: 是否打開成功    func openDatabase(dbname: String) -> Bool {                // UnsafePointer<Int8> UnsafePointer<CChar>         // 對應C語言中的 char*        // filename 必須是完整的路徑名        let path = dbname.documentPath()        PRintln(path)                // sqlite3_open 如果如果數據庫不存在,會新建數據庫文件        // 如果數據庫文件已經存在,就直接打開,返回句柄,不會對數據有任何影響        if sqlite3_open(path, &db) == SQLITE_OK {            println("打開數據庫成功")                        // 本質上只需要運行一次就可以了            if createTable() {                println("創表成功")                                // TODO: 測試查詢數據                let sql = "SELECT id, DepartmentNo, Name FROM T_Department;"                recordSet(sql)            } else {                println("創表失敗")            }        } else {            println("打開數據庫失敗")        }                return false    }        ///  創建數據表,將系統需要的數據表,一次性創建    private func createTable() -> Bool {                // 準備所有數據表的 SQL        // 1> 每一個 SQL 完成后都有一個 ;        // 2> 將所有創表 SQL 寫在一起,每一個換行添加一個 /n        let sql = "CREATE TABLE /n" +            "IF NOT EXISTS T_Department (/n" +            "id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,/n" +            "DepartmentNo CHAR(10) NOT NULL DEFAULT '',/n" +            "Name CHAR(50) NOT NULL DEFAULT '' /n" +            "); /n" +            "CREATE TABLE IF NOT EXISTS T_Employee ( /n" +            "'id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, /n" +            "'name' TEXT NOT NULL, /n" +            "'age' INTEGER NOT NULL, /n" +            "'department_id' INTEGER, /n" +            "CONSTRAINT 'FK_DEP_ID' FOREIGN KEY ('department_id') REFERENCES 'T_Department' ('id') /n" +        ");"                return execSQL(sql)    }        ///  執行沒有返回值的 SQL 語句    ///    ///  :param: sql SQL 字符串    ///    ///  :returns: 是否成功    func execSQL(sql: String) -> Bool {                /**            1. 數據庫指針            2. SQL 字符串的 C 語言格式            3. 回調,執行完成 SQL 指令之后的函數回調,通常都是 nil            4. 回調的第一個參數的指針            5. 錯誤信息,通常也傳入 nil        */        return sqlite3_exec(db, sql.cStringUsingEncoding(NSUTF8StringEncoding)!, nil, nil, nil) == SQLITE_OK    }        ///  執行 SQL 返回一個結果集(對象數組)    ///    ///  :param: sql SQL 字符串    func recordSet(sql: String) {                // 1. 準備語句        var stmt: COpaquePointer = nil        /**            1. 數據庫句柄            2. SQL 的 C 語言的字符串            3. SQL 的 C 語言的字符串長度 strlen,-1 會自動計算            4. stmt 的指針            5. 通常傳入 nil        */        if sqlite3_prepare_v2(db, sql.cStringUsingEncoding(NSUTF8StringEncoding)!, -1, &stmt, nil) == SQLITE_OK {                        // 單步獲取SQL執行的結果 -> sqlite3_setup 對應一條記錄            while sqlite3_step(stmt) == SQLITE_ROW {                // 獲取每一條記錄的數據                recordData(stmt)            }        }    }        ///  獲取每一條數據的記錄    ///    ///  :param: stmt prepared_statement 對象    func recordData(stmt: COpaquePointer) {        // 獲取到記錄        var count = sqlite3_column_count(stmt)        println("獲取到記錄,共有多少列 /(count)")        // 遍歷每一列的數據        for i in 0..<count {            let type = sqlite3_column_type(stmt, i)                        // 根據字段的類型,提取對應列的值            switch type {            case SQLITE_INTEGER:                println("整數 /(sqlite3_column_int64(stmt, i))")            case SQLITE_FLOAT:                println("小樹 /(sqlite3_column_double(stmt, i))")            case SQLITE_NULL:                println("空 /(NSNull())")            case SQLITE_TEXT:                let chars = UnsafePointer<CChar>(sqlite3_column_text(stmt, i))                let str = String(CString: chars, encoding: NSUTF8StringEncoding)!                println("字符串 /(str)")            case let type:                println("不支持的類型 /(type)")            }        }    }}

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品yw在线观看| 亚洲精品第一页| 国产精品久久视频| 国内精品视频在线| 亚洲国产一区二区三区四区| 欧美日韩ab片| 91久久久在线| 国模私拍一区二区三区| 亚洲一区二区久久久久久| 中日韩美女免费视频网址在线观看| 国产成人精品免费视频| 亚洲视频欧洲视频| 国产又爽又黄的激情精品视频| 日韩精品中文字幕视频在线| 欧美激情videoshd| 亚洲成人性视频| 欧美孕妇与黑人孕交| 国模私拍视频一区| 亚洲xxxx3d| 国产成人精品国内自产拍免费看| 中文字幕久久久| 亚洲日本成人网| 精品日韩视频在线观看| 在线播放国产一区二区三区| 日韩精品亚洲元码| 中文字幕久热精品在线视频| 国产一区二区色| 久久国产精品网站| 国产中文字幕91| 国产精品久久久久久久久男| 一区三区二区视频| 伊人av综合网| 欧美日韩美女在线观看| 久久精品国产久精国产思思| 国产精品亚洲综合天堂夜夜| 国产视频丨精品|在线观看| 中文字幕精品国产| 亚洲激情视频在线观看| 久久黄色av网站| 欧美猛交ⅹxxx乱大交视频| 亚洲成人激情小说| 久久综合色88| 亚洲第一男人av| 精品福利在线视频| 日韩精品一二三四区| 亚洲最大的网站| 日韩大片在线观看视频| 国产精品一区二区3区| 欧美三级欧美成人高清www| 亚洲人成网站在线播| 91av在线免费观看视频| 亚洲精品一区二区久| 亚洲欧美综合精品久久成人| 7m第一福利500精品视频| 久久精品99久久香蕉国产色戒| 久久精品久久久久| 亚洲xxxxx| 夜夜躁日日躁狠狠久久88av| 国产精品色婷婷视频| 精品日韩中文字幕| 正在播放亚洲1区| 亚洲2020天天堂在线观看| 久久久av亚洲男天堂| 韩曰欧美视频免费观看| 精品视频在线播放| 久久精品国产99国产精品澳门| 国产欧美日韩免费看aⅴ视频| 久久久精品视频在线观看| 亚洲综合自拍一区| 欧美黄色成人网| 国产a级全部精品| 亚洲美女激情视频| 色综合亚洲精品激情狠狠| 日韩一区视频在线| 亚洲性av网站| 欧美大肥婆大肥bbbbb| 久久伊人色综合| 欧美性xxxx在线播放| 欧美精品videosex性欧美| 97超级碰碰人国产在线观看| 日韩欧美在线观看视频| 久久精品国产成人| 欧美成人免费在线观看| 精品成人在线视频| 91tv亚洲精品香蕉国产一区7ujn| 日韩网站免费观看| 精品美女国产在线| 日本亚洲欧洲色| 久久久中精品2020中文| 国产成人精品综合久久久| 97视频在线观看成人| 国产99视频在线观看| 欧美色欧美亚洲高清在线视频| xxxxx成人.com| 欧美日韩国产丝袜另类| 精品中文字幕在线2019| 成人h视频在线观看播放| 日韩精品极品在线观看播放免费视频| 亚洲欧美在线免费观看| 久久影视电视剧免费网站清宫辞电视| 亚洲a在线观看| 日韩精品视频在线免费观看| 91av在线网站| 欧美日韩国产精品一区| 成人乱色短篇合集| 亚洲一区中文字幕在线观看| 久久国产色av| 亚洲成色999久久网站| 亚洲国产日韩欧美综合久久| 最近2019中文字幕第三页视频| 欧美成人精品不卡视频在线观看| 午夜精品理论片| 久久久久久av| 91国产高清在线| 国产一区二区日韩| 亚洲精选在线观看| 亚洲福利影片在线| 久久久欧美一区二区| 中文字幕无线精品亚洲乱码一区| 日韩欧美亚洲范冰冰与中字| 亚洲欧美中文日韩在线v日本| 久久久爽爽爽美女图片| 亚洲美女av电影| 欧美激情第6页| 成人444kkkk在线观看| 欧美日韩在线一区| 色无极亚洲影院| 尤物九九久久国产精品的分类| 尤物九九久久国产精品的分类| 欧美一区二区三区四区在线| 日韩免费电影在线观看| 欧美大尺度激情区在线播放| 久久夜色精品国产| 国产精品福利小视频| 欧美黄色免费网站| 国产亚洲xxx| 亚洲欧美日韩成人| 91国产精品91| 国产精品成熟老女人| 97视频在线观看网址| 久久久久国产一区二区三区| 久久视频中文字幕| 91精品久久久久久久| 欧美日韩国产激情| 一本色道久久综合狠狠躁篇怎么玩| 欧美中文字幕视频| 亚洲欧美激情四射在线日| www.精品av.com| 亚洲天堂成人在线| 九九综合九九综合| 欧美—级a级欧美特级ar全黄| 精品一区二区三区电影| 一区二区成人精品| 国语自产精品视频在线看| 国产视频在线观看一区二区| 国产亚洲精品一区二区| 精品国偷自产在线视频| 中文字幕久热精品在线视频| 欧美国产亚洲视频| 亚洲国产中文字幕久久网| 亚洲国产精品成人va在线观看| 亚洲色图在线观看| 久久久伊人日本| 国外色69视频在线观看|