久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Swift版的SQLite幫助類怎么創建

193次閱讀
沒有評論

共計 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 小編將為大家推送更多相關知識點的文章,歡迎關注!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-15發表,共計3314字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 镇雄县| 铅山县| 鞍山市| 尤溪县| 旬阳县| 元氏县| 界首市| 南靖县| 赣榆县| 宿松县| 米泉市| 镶黄旗| 巫山县| 高尔夫| 馆陶县| 望谟县| 阜平县| 准格尔旗| 新建县| 阿瓦提县| 韶关市| 尖扎县| 灯塔市| 海阳市| 睢宁县| 乌拉特后旗| 尉犁县| 白山市| 永顺县| 定结县| 筠连县| 兴海县| 江津市| 博白县| 延安市| 犍为县| 大埔县| 禄劝| 兰州市| 亳州市| 承德县|