Swift版的SQLite帮助类怎么创建

62次阅读
没有评论

共计 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字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)