Swift学习教程之SQLite的基础使用


当前第2页 返回上一页

代码

func insertMutipleData() {
  let insertRowString = "INSERT INTO Computer (Id, Name, Weight, Price) VALUES (?, ?, ?, ?);"
  var insertStatement: OpaquePointer?
  //第一步
  if sqlite3_prepare_v2(db, insertRowString, -1, &insertStatement, nil) == SQLITE_OK {
    for (index, good) in goodArr.enumerated() {
      let id: Int32 = Int32(index + 1)
      //第二步
      sqlite3_bind_int(insertStatement, 1, id)
      
      sqlite3_bind_text(insertStatement, 2, good.name, -1, nil)
      
      sqlite3_bind_int(insertStatement, 3, Int32(good.weight))
      
      sqlite3_bind_double(insertStatement, 4, good.price)
      //第三步
      if sqlite3_step(insertStatement) == SQLITE_DONE {
        resultLabel.text = "插入数据成功"
      } else {
        resultLabel.text = "插入数据失败"
      }
      //第四步
      sqlite3_reset(insertStatement)
    }
  } else {
    
  }
  //第五步
  sqlite3_finalize(insertStatement)
}

代码说明

  • insertRowString同上。
  • 第四步:调用sqlite3_reset()函数,以便下次循环再次执行insertStatement
  • 第一步、第二步、第三步、第五步同上。

更新数据

代码

func updateData() {
  let updateString = "UPDATE Computer SET Name = 'changeComputer' WHERE Id = 2;"
  var updateStatement: OpaquePointer?
  //第一步
  if sqlite3_prepare_v2(db, updateString, -1, &updateStatement, nil) == SQLITE_OK {
    //第二步
    if sqlite3_step(updateStatement) == SQLITE_DONE {
      resultLabel.text = "更新成功"
    } else {
      
    }
  }
  //第三步
  sqlite3_finalize(updateStatement)
}

代码说明

  • updateString:将Id==2的数据的Name字段改为changeComputer。
  • sqlite3_prepare_v2():准备,sqlite3_step():执行更新statement,sqlite3_finalize():结束。

删除数据

代码

func deleteData() {
  let deleteString = "DELETE FROM Computer WHERE Id = 2;"
  var deleteStatement: OpaquePointer?
  //第一步
  if sqlite3_prepare_v2(db, deleteString, -1, &deleteStatement, nil) == SQLITE_OK {
    //第二步
    if sqlite3_step(deleteStatement) == SQLITE_DONE {
      resultLabel.text = "删除成功"
    }
  } else {
    
  }
  //第三步
  sqlite3_finalize(deleteStatement)
}

代码说明

  • deleteString:删除表中Id==2的数据。
  • sqlite3_prepare_v2():准备,sqlite3_step():执行删除statement,sqlite3_finalize():结束。

查询一条数据

代码

func queryOneData() {
  let queryString = "SELECT * FROM Computer WHERE Id == 2;"
  var queryStatement: OpaquePointer?
  //第一步
  if sqlite3_prepare_v2(db, queryString, -1, &queryStatement, nil) == SQLITE_OK {
    //第二步
    if sqlite3_step(queryStatement) == SQLITE_ROW {
      //第三步
      let id = sqlite3_column_int(queryStatement, 0)
      
      let queryResultName = sqlite3_column_text(queryStatement, 1)
      let name = String(cString: queryResultName!)
      let weight = sqlite3_column_int(queryStatement, 2)
      let price = sqlite3_column_double(queryStatement, 3)
      
      
      resultLabel.text = "id: \(id), name: \(name), weight: \(weight), price: \(price)"
    } else {
      resultLabel.text = "error"
    }
  }
  //第四步
  sqlite3_finalize(queryStatement)
}

代码说明

  • queryString:在Computer表中查找所有Id == 2的数据。
  • 第二步:注意此时要判断的status code为SQLITE_ROW,如果该判断为true则代表你查询的数据存在在表里。
  • 第三步:sqlite3_column_int()函数是按照列数取数据,第一个参数是statement,第二个参数则是该字段是第几列(Id 为表里的第一列,从0开始计算)。sqlite3_column_text()要略微复杂一点,他需要转换类型通过String(cString: queryResultName!)。
  • 第一步、第四步同上

查询多条数据

代码

func queryAllData() {
  let queryString = "SELECT * FROM Computer;"
  var queryStatement: OpaquePointer?
  //第一步
  if sqlite3_prepare_v2(db, queryString, -1, &queryStatement, nil) == SQLITE_OK {
    //第二步
    while(sqlite3_step(queryStatement) == SQLITE_ROW) {
      //第三步
      let id = sqlite3_column_int(queryStatement, 0)
      
      let queryResultName = sqlite3_column_text(queryStatement, 1)
      let name = String(cString: queryResultName!)
      let weight = sqlite3_column_int(queryStatement, 2)
      let price = sqlite3_column_double(queryStatement, 3)
      
      
      resultLabel.text = "id: \(id), name: \(name), weight: \(weight), price: \(price)"
    }
  }
  //第四步
  sqlite3_finalize(queryStatement)
}

代码说明

  • 第二步:此处为while循环,当查询到最后一行时会返回SQLITE_DONE状态码来结束。
  • 第一步第三步第四步同上。

小结

通过上面我们可以总结出执行一个statement的大概流程:sqlite3_prepare_v2():准备,sqlite3_step():执行statement,sqlite3_finalize():结束。好了,到这里SQLite3的增删改查基本操作也就完事了。下一篇我们来了解一下SQLite的进阶用法。Bye~

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。


标签:SQLite

返回前面的内容

相关阅读 >>

Sqlitestudio打开后如何切换成简体中文Sqlitestudio绿色版中文设置方法介绍

Sqlite 错误码整理

android开发之Sqlite的使用方法

Sqlite快速入门指南

android studio如何获取Sqlite数据并显示到listview上

Sqlite教程(十):内存数据库和临时数据库

c#中嵌入Sqlite数据库的简单方法

django 2.0版本的新特性抢先看!

ios开发中使用sql语句操作数据库的基本用法指南

python数据库Sqlite3图文实例详解

更多相关阅读请进入《Sqlite》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...