Swift中SQLite的使用–DDL
步骤
1. 在Xcode中导入SQLite文件
![](file:///Users/erer/Desktop/Snip剪切暂存/Snip20160315_1.png)
2.建立桥接
- 创建一个头文件,如SQLiter+Bridge.h
- 在BuildSetting中的配置如下
![在build Setting中配置 项目名/头文件](file:///Users/erer/Desktop/Snip剪切暂存/Snip20160315_2.png)
- 在SQLiter+Bridge.h头文件中导入sqlite3.h
#ifndef SQlite_Bridge_h
#define SQlite_Bridge_h
//导入sqlit3.h头文件
#import "sqlite3.h"
#endif
3.创建SQLiteManager[单例]
static let shareInstance: SQLitemanager = SQLiteManager()
4.DDL创建数据库和表
class SQLiteManager: NSObject {
//单例
static let shareInstance : SQLiteManager = SQLiteManager()
//0 定义数据库变量
var db: COpaquePointer = nil
override init() {
//创建数据库文件
//0-1 数据库路径
guard let path = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true).first else{
return
}
//拼接数据库文件名称
let filepath = (path as NSString).stringByAppendingPathComponent("demo.sqlite")
//转换成C语言字符串
guard let cFilepath = filepath.cStringUsingEncoding(NSUTF8StringEncoding) else{
return
}
sqlite3_open(cFilepath, &db)
//创建表
let sql = "CREATE TABLE IF NOT EXISTS T_Student (id INTEGER PRIMARY KEY, name TEXT, age INTEGER, score REAL);"
guard let csql = sql.cStringUsingEncoding(NSUTF8StringEncoding) else{
return
}
sqlite3_exec(db, csql, nil, nil, nil)
}
}
其中方法中具体参数意义如下
//1.创建数据库文件
/*
参数一:<#T##filename: UnsafePointer<Int8>##UnsafePointer<Int8>#> 数据库路径(C语言)
参数二:<#T##ppDb: UnsafeMutablePointer<COpaquePointer>##UnsafeMutablePointer<COpaquePointer>#> 需要保存的数据库
*/
sqlite3_open(cFilePath, &db)
//2.创建表
//1.编写sqlite语句
let sql = "CREATE TABLE IF NOT EXISTS T_Student (id INTEGER PRIMARY KEY, name TEXT, age INTEGER, score REAL);"
//C语言
guard let cSql = sql.cStringUsingEncoding(NSUTF8StringEncoding) else{
return
}
//2.执行sqlite语句
/*
参数一:<#T##COpaquePointer#> 需要执行在的数据库文件
参数二:<#T##sql: UnsafePointer<Int8>##UnsafePointer<Int8>#> sqli语句
参数三:回调
<#T##callback: ((UnsafeMutablePointer<Void>, Int32, UnsafeMutablePointer<UnsafeMutablePointer<Int8>>, UnsafeMutablePointer<UnsafeMutablePointer<Int8>>) -> Int32)!##((UnsafeMutablePointer<Void>, Int32, UnsafeMutablePointer<UnsafeMutablePointer<Int8>>, UnsafeMutablePointer<UnsafeMutablePointer<Int8>>) -> Int32)!##(UnsafeMutablePointer<Void>, Int32, UnsafeMutablePointer<UnsafeMutablePointer<Int8>>, UnsafeMutablePointer<UnsafeMutablePointer<Int8>>) -> Int32#>
参数四:<#T##UnsafeMutablePointer<Void>#> 回调的第一个参数
参数五:<#T##errmsg: UnsafeMutablePointer<UnsafeMutablePointer<Int8>>##UnsafeMutablePointer<UnsafeMutablePointer<Int8>>#> 错误信息
*/
sqlite3_exec(db, cSql, nil, nil, nil)
}