1.向学生表中插入100条数据

2.按条件查询学生数据

3.修改学生数据

4.删除学生数据

import UIKit

class ViewController: UIViewController {

lazy var documentsPath:String={

let paths=NSSearchPathForDirectoriesInDomains(.DocumentDirectory,.UserDomainMask,true)

return paths.first!

}()

var db:COpaquePointer=nil

var stmt:COpaquePointer=nil

override func viewDidLoad() {

super.viewDidLoad()

createOrOpenDatabase()

//createTable()

//基本步骤

//1.打开数据库

//2.处理数据

//3.关闭数据库

//插入数据

//insertStudents()

//查询数据

//queryStudents()

//修改学生数据

//updateStudent()

//queryStudents()

//删除学生数据

deleteStudents()

queryStudents()

//关闭数据库

sqlite3_close(db)

}

}

extension ViewController{

func createOrOpenDatabase(){

print("\(NSHomeDirectory())")

let path:NSString = "\(documentsPath)/test.sqlite3"

let filename=path.UTF8String

if sqlite3_open(filename,&db) != SQLITE_OK {

print("create or open failed.......")

sqlite3_close(db)

}

}

func createTable(){

let string:NSString = "create table if not exists Student(id integer primary key autoincrement,sno text,name text,score,integer)"

let sql = string.UTF8String

if sqlite3_exec(db,sql,nil,nil,nil) != SQLITE_OK{

print("create table failed......")

sqlite3_close(db)

}

}

func insertStudents(){

//sno: "1001~1100"

//name: "[a-j][01-10]"

//score: 0-100

let strs1=["a","b","c","d","e","f","g","h","i","j"]

let strs2=["01","02","03","04","05","06","07","08","09","10"]

for i in 0..<100{

let sno="\(1001+i)"

let name=strs1[i/10] + strs2[i%10]

let score=i

insertStudent(sno:sno,name:name,score:score)

}

}

func insertStudent(sno sno:String,name:String,score:Int){

//准备SQL语句

let string:NSString="insert into Student(sno,name,score) values(?,?,?)"

let sql=string.UTF8String

//解析SQL文本语句

if sqlite3_prepare_v2(db,sql,-1,&stmt,nil) != SQLITE_OK{

sqlite3_close(db)

print("\(sno),insert failed......")

}

//绑定参数

let csno=(sno as NSString).UTF8String

let cname=(name as NSString).UTF8String

sqlite3_bind_text(stmt,1,csno,-1,nil)

sqlite3_bind_text(stmt,2,cname,-1,nil)

sqlite3_bind_int(stmt,3,Int32(score))

//执行SQL语句

if sqlite3_step(stmt) == SQLITE_ERROR{

sqlite3_close(db)

print("\(sno),insert failed......")

}else{

//释放资源

sqlite3_finalize(stmt)

}

}

func queryStudents(){

//准备SQL语句

let string:NSString="select sno,name,score from Student"

//let string:NSString="select sno,name,score from Student where score > 60"

//let string:NSString="select sno,name,score from Student where name like 'a%'"

let sql=string.UTF8String

//解析SQL文本语句

if sqlite3_prepare_v2(db,sql,-1,&stmt,nil) != SQLITE_OK{

sqlite3_close(db)

print("query failed......")

return

}

//执行SQL语句

while sqlite3_step(stmt) == SQLITE_ROW{

let csno = sqlite3_column_text(stmt,0)

let sno = NSString(UTF8String:UnsafePointer(csno))!

let cname = sqlite3_column_text(stmt,1)

let name=NSString(UTF8String:UnsafePointer(cname))!

let score=sqlite3_column_int(stmt,2)

print("\(sno),\(name),\(score)")

}

//释放资源

sqlite3_finalize(stmt)

}

func updateStudent(){

let string:NSString = "update Student set score = 100 where name like 'a%'"

let sql = string.UTF8String

if sqlite3_exec(db,sql,nil,nil,nil) != SQLITE_OK{

sqlite3_close(db)

print("update failed......")

}

}

func deleteStudents(){

let string:NSString="delete from Student where score <60"

let sql = string.UTF8String

if sqlite3_exec(db,sql,nil,nil,nil) != SQLITE_OK {

sqlite3_close(db)

print("delete failed......")

}

}

}

最新文章

  1. display:inline-block的间隙问题和解决办法
  2. MFC中混合使用Duilib制作界面
  3. 深入浅出ES6(十三):类 Class
  4. Unity3D脚本中文系列教程(一)
  5. 深入懂得android view 生命周期
  6. Centos 添加Root用户
  7. Android 使用Facebook的 Stetho工具
  8. C++ Primer 学习笔记_29_STL实践与分析(3) --操作步骤集装箱(下一个)
  9. jvm004 解析与分派
  10. SQL server学习(二)表结构操作、SQL函数、高级查询
  11. laravel带参数分页
  12. 简单快速的Android打渠道包的方法
  13. word2vec原理知识铺垫
  14. python项目离线环境配置指南
  15. 更改arch的默认终端
  16. Cookies、sessionStorage和localStorage解释及区别?
  17. app.js:1274 [Vue warn]: Error in render: &quot;TypeError: Cannot read property &#39;object_id&#39; of undefined&quot;问题小记
  18. selenium启动不了浏览器或者启动后不会写入网址,先更新下浏览器驱动
  19. https-SSL请求
  20. C 语言实例 - 斐波那契数列

热门文章

  1. python+selenium+unittest,爬虫电影网站
  2. 【UWP】对 Thickness 类型属性进行动画
  3. ExtJs4 笔记(4) Ext.XTemplate 模板
  4. ASP.NET中Session简单原理图
  5. csharp: Importing or Exporting Data from Worksheets using aspose cell
  6. MyEclipse+Mysql (一)
  7. 浅谈一下缓存策略以及memcached 、redis区别
  8. 将32位MD5摘要串转换为128位二进制字符串
  9. 六个创建模式之抽象工厂模式(Abstract Factory Pattern)
  10. 六个创建模式之工厂方法模式(Factory Method Pattern)