一,導(dǎo)入描述文件
1.

2,
.
3,

二,寫橋接文件sqliteManager
1.文件里寫入
#import <sqlite3.h>就可以了
2.把橋接文件添加到編譯環(huán)境

三, 寫數(shù)據(jù)庫(kù)管理類(單例)
import UIKit class sqliteManager: NSObject { private static let manager: sqliteManager = sqliteManager() //單例 class func shareManager() -> sqliteManager{ return manager } //數(shù)據(jù)庫(kù)對(duì)象 private var db:OpaquePointer? = nil func openDB(sqliteName:String){ //0.拿到數(shù)據(jù)庫(kù)的路徑 let path = sqliteName.docDir() print(path) let cPath = path.cString(using: String.Encoding.utf8) //1.需要代開的數(shù)據(jù)庫(kù)的路徑 c語(yǔ)言的字符串 //2.打開之后的數(shù)據(jù)庫(kù)對(duì)象(指針),以后所有的數(shù)據(jù)庫(kù)操作,都必須拿到這個(gè)指針才能進(jìn)行相關(guān)操作 if sqlite3_open(cPath, &db) != SQLITE_OK{ print("數(shù)據(jù)庫(kù)打開失敗") return } if creatTable(){ print("創(chuàng)建表成功") }else{ print("創(chuàng)建表失敗") } } private func creatTable() -> Bool { // 1.編寫SQL語(yǔ)句 // 建議: 在開發(fā)中編寫SQL語(yǔ)句, 如果語(yǔ)句過長(zhǎng), 不要寫在一行 // 開發(fā)技巧: 在做數(shù)據(jù)庫(kù)開發(fā)時(shí), 如果遇到錯(cuò)誤, 可以先將SQL打印出來, 拷貝到PC工具中驗(yàn)證之后再進(jìn)行調(diào)試 let sql = "CREATE TABLE IF NOT EXISTS T_Person( /n" + "id INTEGER PRIMARY KEY AUTOINCREMENT, /n" + "name TEXT, /n" + "age INTEGER /n" + "); /n" // print(sql) // 2.執(zhí)行SQL語(yǔ)句 return execSQL(sql: sql) } func execSQL(sql: String) -> Bool { // 0.將Swift字符串轉(zhuǎn)換為C語(yǔ)言字符串 let cSQL = sql.cString(using: String.Encoding.utf8)! // 在SQLite3中, 除了查詢意外(創(chuàng)建/刪除/新增/更新)都使用同一個(gè)函數(shù) /* 1. 已經(jīng)打開的數(shù)據(jù)庫(kù)對(duì)象 2. 需要執(zhí)行的SQL語(yǔ)句, C語(yǔ)言字符串 3. 執(zhí)行SQL語(yǔ)句之后的回調(diào), 一般傳nil 4. 是第三個(gè)參數(shù)的第一個(gè)參數(shù), 一般傳nil 5. 錯(cuò)誤信息, 一般傳nil */ if sqlite3_exec(db, cSQL, nil, nil, nil) != SQLITE_OK { return false } return true } } 四,在AppDelegate里調(diào)用openDB函數(shù) 創(chuàng)建數(shù)據(jù)庫(kù)
mport UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. sqliteManager.shareManager().openDB(sqliteName: "tergun.sqlite") return true } } 運(yùn)行結(jié)果

附件
工具類
// // String+Category.swift // DSWeibo // // Created by xiaomage on 15/9/10. // Copyright © 2015年 小碼哥. All rights reserved. // import UIKit extension String{ /** 將當(dāng)前字符串拼接到cache目錄后面 */ func cacheDir() -> String{ let path = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last! as NSString return path.appendingPathComponent((self as NSString).lastPathComponent) } /** 將當(dāng)前字符串拼接到doc目錄后面 */ func docDir() -> String { let path = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last! as NSString return path.appendingPathComponent((self as NSString).lastPathComponent) } /** 將當(dāng)前字符串拼接到tmp目錄后面 */ func tmpDir() -> String { let path = NSTemporaryDirectory() as NSString return path.appendingPathComponent((self as NSString).lastPathComponent) } } 以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選