SQLite3 Swift

来源:互联网 发布:php oa系统模块 编辑:程序博客网 时间:2024/05/16 23:41
sqlite3在Swift创建方法
引入libsqlite3.dylib
然后添加 工程名-Bridging-Header.h 里面添加#import “sqlite3.h"
然后去工程里build Settings里找到Swift Compiler - Code Generation里的
Objective-C Bridging Header添加进入刚刚的 工程名-Bridging-Header.h
整形 INTEGER
sqlite3_stmt 用于保存编译好的SQL语句
sqlite3_open() 打开数据库,没有数据库时创建
sqlite3_exec() 执行非查询的sql语句
sqlite3_step() 在调用sqlite3_prepare后,使用这个函数在记录集中移动
sqlite3_close() 关闭数据库文件

sqlite3_column_text() 取text类型的数据
sqlite3_column_blob() 取blob类型的数据
sqlite3_column_int() 取int类型的数据

NSHomeDirectory()//得到应用程序目录的路径,在该目录下有三个文件夹Documents、Library、temp以及一个.app包!

let path = “\(NSHomeDirectory())/Documents” //在应用程序目录的路径下Documents文件夹var dbName = “TextSqlite3” //数据库名字var dbHandel:COpaquePointer = nil //C指针操作 对应于C语言中 Void *var dataBase = “\(path)/\(dbName)” //数据库存储位置包括名字


/*********打开数据库(如果没有则会创建该数据库)***************/
//sqlite3_open(filename:UnsafePointer<Int8>,ppDb:UnsafeMutablePointer<COpaquePointer>)  第一个参数为数据库路径加名字 第二个参数为C指针
</pre><span style="color: rgb(51, 51, 51);"></span><pre name="code" class="plain">let result = sqlite3_open(dataBase,&dbHandel) //返回值为Int32 返回0表示成功,1表示失败



/**************创建表*********************/
var Create = “CREATE TABLE TEST(id INTEGER PRIMARY KEY,name TEXT)” //创建表


//sqlite3_exec(COpaquePointer,sql:UnsafePointer<Int8>,callback:CFunctionPointer<((UnsafeMutablePointer<Void>,Int32,UnsafeMutablePointer<UnsafeMutablePointer<Int8>>,Unsafemuta,UnsafeMutablePointer<Void>,errmsg:UnsafeMutablePointer<UnsafeMutablePointer<Int8>)
参数1 C指针 参数2 SQL语句 参数3 回调函数 参数4 直接写nil 参数5 作为错误信息,用以代码调试

var result = sqlite3_exec(dbHandel,Create,nil.nil.nil)if result == SQLITE_OK {     println(“成功")}


/**************添加数据******************/
var Insert = “INSERT INTO test(id,name) VALUES(1,’aaa')"var result = sqlite3_exec(dbHandel,Insert,nil,nil,nil)if result == SQLITE_OK {     println(“插入成功")}else {     println(“插入失败")}

/******添加数据2...数据捆绑***********/
var Insert = “INSERT INTO test(id,name) VALUES(?,?)"var stmt:COpaquePointer = nil//sqlite3_prepare_v2(db:COpaquePointer,zSql:UnsafePointer<Int8>,nByte:Int32ppStmt:UnsafeMutablePointer<COpaquePointer>,pzTail:UnsafeMutablePointer<UnsafePointer<Int8>>)参数1 C指针 参数2 SQL语句 参数3 sql长度(如果设置为-1,则代表系统会自动计算sql语句的长度), 参数4 用来取数据 参数5 一般用不上直接nilvar result = sqlite3_prepare_v2(dbHandel,Insert,-1,&stmt,nil)if result == SQLITE_OK {     //参数1 stmt类型变量prepare_v2使用过,参数2 所约束变量标签的index 参数3要加入的值     sqlite3_bind_int(stmt,1,4)     //参数1 参数2 参数3同上 参数4代表第二个参数中需要传递的长度,-1表示全部字符串 参数5 回调函数,比如执行后做内存清楚工作等.     sqlite3_bing_text(stmt,2,’XXXXX’,-1,nil)}if sqlite3_step(stmt) != SQLITE_DONE {     println(“没插入数据")     sqlite3_finalize(stmt)}

/************数据查询***************/
var SELECT = “SELECT * FROM text"var stmt:COpaquePointer = nilvar result = sqlite3_prepare_v2(dbHandel,SELECT,-1,&stmt,nil)if result == SQLITE_OK {     if sqlite3_step(stmt) == SQLITE_ROW {          var id = sqlite3_colum_int(stmt,0) //返回值为Int32类型          //text属性返回值为UnsafePointer<Uint8>类型所以要强制转换为Sring          var string = sqlite3_colum_text(stmt,1)          var name = String.fromCString(UnsafePointer<Uint8>(string))     }}


查询与添加捆绑数据约束标签参数不同..查询从0开始代表第一列 添加1开始代表第一列


0 0
原创粉丝点击