Swift版的SQLite帮助类
来源:互联网 发布:网络被攻击 编辑:程序博客网 时间:2024/05/16 04:18
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 = nil var 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 3 for 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}
1 0
- Swift版的SQLite帮助类
- SQLite数据库的SQLiteOpenHelper帮助类
- SQLiteHelper-SQLite帮助类
- SQLite帮助类
- 一个功能齐全的SQLite数据库的帮助类
- 建一个Sqlite帮助类
- android平台上关于SQLite帮助类SQLiteOpenHelper 的使用
- [.Net码农]SQLiteHelper-SQLite帮助类
- 自做的Cocos2d-x sqlite的帮助操作类DBHelper
- SQLite数据库的简单应用(swift)
- Swift IOS原生SQLite库的使用
- SQLite的使用—— Swift代码
- ActiveSQLite更简单的Swift数据库方案(SQLite.swift封装)
- 轻量级 SQLite数据库帮助类 增删改查 分页
- C#操作SQLite数据库帮助类——SQLiteHelper
- SQLite.swift Documentation
- sqlite.swift应用简介
- SQLite指南(2) -- 帮助及编译SQLite
- Path Sum
- 二叉排序树的一些简单操作
- 欢迎使用CSDN-markdown编辑器
- Minimum Depth of Binary Tree
- 策略模式
- Swift版的SQLite帮助类
- Balanced Binary Tree
- hd 2553N皇后问题(深搜,回溯)
- 三种不同类型的ssh隧道
- ActionBar与ViewPager的整合
- 遍历Map的四种方法
- 观察者模式
- 网络协议——IP
- record git command