共計 3314 個字符,預計需要花費 9 分鐘才能閱讀完成。
這篇文章主要講解了“Swift 版的 SQLite 幫助類怎么創建”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“Swift 版的 SQLite 幫助類怎么創建”吧!
SQLiteHelper 創建 SQLiteHelper 類
/// SQLite 數據庫處理幫助類
/// 此類中封裝了關于 SQLite 數據庫處理的業務函數
class SQLiteHelper
// 業務代碼...}
單例
private static let instance = SQLiteHelper()/// 單例 全局的數據訪問接口 class var sharedInstance: SQLiteHelper
{return instance}
全局變量
var db: COpaquePointer = nil
打開數據庫
/// 打開數據庫 ////// :param: dbName 數據庫名稱 ////// :returns: 返回 是否打開成功 func openDatabase(dbName: String) - Bool
{let path = dbName.documentPath()
println(path)return sqlite3_open(path, db) == SQLITE_OK
}
創建示例數據表
/// 創建 T_Department 和 T_Employee 表 ////// :returns: 返回 是否創建成功 func createTable() - Bool
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)
}
執行 INSERT、UPDATE、DELETE 語句
/// 執行 INSERT、UPDATE、DELETE SQL 語句 ////// :param: sql SQL 語句 ////// :returns: 返回 是否執行成功 func execSql(sql: String) - Bool
{// 返回結果
return sqlite3_exec(db, sql.cStringUsingEncoding(NSUTF8StringEncoding)!, nil, nil, nil) == ITE_OK
}
執行 SQL 語句 返回結果數量
/// 執行 SQL 語句 返回結果數量 ////// :param: sql SQL 語句 ////// :returns: 返回 結果 func execCount(sql: String) - Int
{let record = execRecordSet(sql)// 返回結果 return (record[0] as! [AnyObject])[0] as! Int
}
執行返回單條記錄
/// 執行返回單條記錄 ////// :param: sql SQL 語句 ////// :returns: 返回 單條記錄 func execRow(sql: String) - [AnyObject]?
{let record = execRecordSet(sql)if record.count 0{return (record[0] as! [AnyObject])
}else{return nil
}
}
執行 SQL 返回結果集合
/// 執行 SQL 返回結果集合 ////// :param: sql SQL 語句 ////// :returns: 返回 查詢的結果集 func execRecordSet(sql: String) - [AnyObject]
{var stmt: COpaquePointer = nilvar recordList = [AnyObject]()if sqlite3_prepare_v2(db, sql.cStringUsingEncoding(NSUTF8StringEncoding)!, -1, stmt, nil) == TE_OK
{while sqlite3_step(stmt) == SQLITE_ROW
{ recordList.append(singleData(stmt)!)
}
}// 釋放語句 sqlite3_finalize(stmt)// 返回結果 return recordList
}
執行一行數據
/// 執行一行數據 ////// :param: stmt 執行的語句 ////// :returns: 返回一行數據數組 func singleData(stmt: COpaquePointer) - [AnyObject]?
{var result = [AnyObject]()// 返回該表的列數 let count = sqlite3_column_count(stmt)// #define SQLITE_INTEGER 1// #define SQLITE_FLOAT 2// #define SQLITE_BLOB 4// #define SQLITE_NULL 5// #ifdef SQLITE_TEXT// # undef SQLITE_TEXT// #else// # define SQLITE_TEXT 3// #endif// #define SQLITE3_TEXT 3for index in 0.. count
{let type = sqlite3_column_type(stmt, index)// 根據字段的類型,提取對應列的值 switch type {case SQLITE_INTEGER:
result.append(Int(sqlite3_column_int64(stmt, index)))case SQLITE_FLOAT:
result.append(sqlite3_column_double(stmt, index))case SQLITE_NULL:
result.append(NSNull())case SQLITE_TEXT:let rrrrr: UnsafePointer UInt8 = sqlite3_column_text(stmt, index)let chars = UnsafePointer CChar (sqlite3_column_text(stmt, index))let str = String(CString: chars, encoding: NSUTF8StringEncoding)!
result.append(str)case let type:
println(不支持的類型 \(type) )
}
}// 返回結果 return result
}
感謝各位的閱讀,以上就是“Swift 版的 SQLite 幫助類怎么創建”的內容了,經過本文的學習后,相信大家對 Swift 版的 SQLite 幫助類怎么創建這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!
正文完