Swift与数据库之SQLite的基本使用--DDL

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)
    }
    原文作者:erer22Colin
    原文地址: https://www.jianshu.com/p/804ff8f60a77
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞