源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

iOS中sqlite数据库的原生用法

  • 时间:2021-07-14 16:53 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:iOS中sqlite数据库的原生用法
在iOS中,也同样支持sqlite。目前有很多第三方库,封装了sqlite操作,比如swift语言写的SQLite.swift、苹果官网也为我们封装了一个框架:CoreData。 它们都离不开Sqlite数据库的支持。 本文主要介绍下,如何在swift中使用原生的sqlite的API。 在Xcode中引入sqlite API 新建一个swift项目后,我们需要让项目引入sqlite的动态链接库: 1、项目配置界面,选择Build Phases [img]http://files.jb51.net/file_images/article/201605/201655102341764.png?201645102351[/img] 2、点开Link Binary With Libraries,点击+号,在弹窗中输入sqlite3 [img]http://files.jb51.net/file_images/article/201605/201655102404227.png?201645102412[/img] 完成后: [img]http://files.jb51.net/file_images/article/201605/201655102419060.png?201645102426[/img] 3、创建桥接文件,在项目目录下新建一个头文件(h): [img]http://files.jb51.net/file_images/article/201605/201655102435098.png?201645102443[/img] 4、然后使用import导入sqlite库: #import "sqlite3.h" [img]http://files.jb51.net/file_images/article/201605/201655102523741.png?201645102535[/img] 5、最后一步,在项目配置界面,选择Build Setting,搜索框中输入swift,在结果中选择Objective-C Bridging Header,输入刚才新建的桥接文件的名称: [img]http://files.jb51.net/file_images/article/201605/201655102548498.png?201645102556[/img] 整个引入工作已经完成了,可以测试下是否引入成功,在swift文件中,输入sqlite3,看是否有sqlite3相关的智能提示出来。 [b]创建(打开)与关闭数据库[/b] 要创建或者打开一个sqlite数据库,使用sqlite3_open方法,我们无需手动创建一个数据库文件,如果没有文件,sqlite3_open方法会为我们自动创建数据库文件,然后打开数据库。
//数据库存放路径
let sqlitepath = NSHomeDirectory().stringByAppendingPathComponent("Documents/sqlite3.db")
//打开数据库,指定数据库文件路径,如果文件不存在后先创建文件,再打开,所以无需手动创建文件
let state = sqlite3_open(sqlitepath, &db)
if state == SQLITE_OK{
 println("打开数据库成功")
}else{
 println("打开数据库失败")
}
这里sqlite3_open方法的第二个参数是一个指针,是数据库打开后返回的一个操作指针,通过使用它,我们可以对数据库进行一系列的操作。我们先把它定义在外面,方便我们使用。
var db:COpaquePointer = nil
override func viewDidLoad() {
 super.viewDidLoad()
 ...
}
[b]创建表和删除表 [/b]使用sqlite3_exec方法可以执行一段sql语句,主要就是sql语句的差异,其他都一样:
//创建表
let createtable = "create table if not exists students (id integer primary key autoincrement,name
text,stuId integer)"
let result = sqlite3_exec(db, createtable, nil, nil, nil)
if result == SQLITE_OK{
 println("创建表成功")
}
//删除表
let removetable = "drop table studets"
let result2 = sqlite3_exec(db, removetable, nil, nil, nil)
if result2 == SQLITE_OK{
 println("删除表成功")
}

[b]插入更新删除数据[/b] 插入数据使用了占位符,sql语句中使用问号代表值。使用sqlite3_bind_xxx来绑定值。
//插入数据
let inserttable = "insert into studets (stuId,name) values(?,?)"
var statement:COpaquePointer = nil
let result3 = sqlite3_prepare_v2(db, inserttable, -1, &statement, nil)
if result3 == SQLITE_OK{
 //绑定数据
 sqlite3_bind_int(statement, 1, 1)
 sqlite3_bind_text(statement, 2, "lijialong", -1, nil)
 
 //执行
 if sqlite3_step(statement) == SQLITE_DONE{
  println("数据插入成功")
 }
 sqlite3_finalize(statement)
 }


[b]更新数据也类似几个步骤:[/b]
let updatetable = "update studets set name ='ss' where id = 1"
var statement:COpaquePointer = nil
sqlite3_prepare_v2(db, updatetable, -1, &statement, nil)
sqlite3_step(statement)
sqlite3_finalize(statement)
[b]删除数据:[/b]
let deleterow = "delete from studets where name='lijialong'"
sqlite3_prepare_v2(db, deleterow, -1, &statement, nil)
sqlite3_step(statement)
sqlite3_finalize(statement)

[b]查询数据[/b]
//查询数据
let query = "select * from studets"
//这条执行后,数据就已经在sattement中了
sqlite3_prepare_v2(db, query, -1, &statement, nil)
//游标往下走一步,如果返回SQLITE_ROW就进入
while sqlite3_step(statement) == SQLITE_ROW{
 let id = sqlite3_column_int(statement, 0)
 let stuId = sqlite3_column_int(statement, 2)
}
以上就是关于iOS中sqlite数据库的原生用法详细介绍,希望对大家的学习有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部