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......")

}

}

}

SQLite数据操作的更多相关文章

  1. [Sqlite]--&gt;Java采用jdbc联系Sqlite各种特定的工艺数据库的数据操作

    引:     1, Sqlite在Windows.Linux 和 Mac OS X 上的安装过程     2.嵌入式数据库的安装.建库.建表.更新表结构以及数据导入导出等等具体过程记录     3,嵌 ...

  2. mono for android中使用dapper或petapoco对sqlite进行数据操作

    在mono for android中使用dapper或petapoco,很简单,新建android 类库项目,直接把原来的文件复制过来,对Connection连接报错部分进行注释和修改就可以运行了.( ...

  3. UWP开发之ORM实践:如何使用Entity Framework Core做SQLite数据持久层?

    选择SQLite的理由 在做UWP开发的时候我们首选的本地数据库一般都是Sqlite,我以前也不知道为啥?后来仔细研究了一下也是有原因的: 1,微软做的UWP应用大部分也是用Sqlite.或者说是微软 ...

  4. Unity3D连接sqlite数据库操作C#版

    unity3d有自己对应的sqlite.dll分别需要三个文件 1.Mono.Data.Sqlite.dll 在unity安装文件“Unity\Editor\Data\MonoBleedingEdge ...

  5. 我的Android六章:Android中SQLite数据库操作

    今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...

  6. (转)SQLLite数据操作

    原文:http://dreamboy.blog.51cto.com/3180937/722352 SQLLite数据操作 一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存 ...

  7. 安卓 SQLite数据库操作实例

    前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...

  8. 在安卓开发中使用SQLite数据库操作实例

    前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...

  9. SQLite CRUD操作

    SQLite CRUD操作代码实例: 1:首先创建一个继承了SQLiteOpenHelper类的MyDatabaseHelper类.实现他的onCreate(SQLiteDatabase db) on ...

随机推荐

  1. [ShortCut] IE10快捷键

    适用范围: Windows 8 操作步骤: 1.快速输入网址: “Ctrl+L”.“F4”:在IE10下按下“Ctrl+L”快捷键,可以直接将光标转到浏览器地址栏(注:地址栏中的网址会被选中),可以直 ...

  2. JS对象的创建与使用

    本文内容:     1.介绍对象的两种类型:     2.创建对象并添加成员:     3.访问对象属性:     4.利用for循环枚举对象的属性类型:     5.利用关键字delete删除对象成 ...

  3. TCP和UDP之间的区别

    TCP---传输控制协议,提供的是面向连接.可靠的字节流服务.当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据.TCP提供超时重发,丢弃重复数据,检验数据,流量控制等 ...

  4. JMS学习(三)JMS 消息结构之属性及消息体详解

    一.前言 通过上一篇的学习我们知道了消息分为三个部分,即消息头,属性及消息体,并对消息头的十个属性进行了详细的介绍,本文再对消息属性及消息体进行详细的介绍. 二.属性介绍 消息属性的主要作用是可以对头 ...

  5. jquery 全选 全不选 反选

    1.概述 在项目中经常遇到列表中对复选框进行勾选操作,全选...反选.. 2. example <html> <body> <form id="test-for ...

  6. javascript 之注意url特殊字符限制

    引子 浏览器URl地址,上网一定会用到,但是浏览器地址有中文或者浏览器url参数操作的时候,经常会用到encodeURIComponent()和decodeURIComponent()以及encode ...

  7. 【iOS】Quartz2D信纸条纹

    一.前导程序 新建一个项目,在主控制器文件中实现以下几行代码,就能轻松的完成图片在视图中的平铺. - (void)viewDidLoad { [super viewDidLoad]; UIImage ...

  8. html alert 的三种方式

    html alert 一共有三种方式. 第一种是最简单的直接在js的函数里alert("要输出的内容"); 这种直接就是一个弹出框,显示要输出的内容. 第二种是带选择的弹出框,弹出 ...

  9. android开发布局文件imageview 图片等比例缩放:

    ImageView的属性scaleType,如果等比缩放的话,就使用CenterInside,如果想固定大小的话,就CenterCrop <?xml version="1.0" ...

  10. COMMIT WORK AND WAIT 是在WAIT什么

    wait 还是不wait,这是个问题.       这是同步更新还是异步更新的问题:如果是只commit work,是异步更新,触发注册在当前SAP LUW中所有数据更新动作,数据更新动作由SAP的更 ...