SQLite数据操作
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数据操作的更多相关文章
- [Sqlite]-->Java采用jdbc联系Sqlite各种特定的工艺数据库的数据操作
引: 1, Sqlite在Windows.Linux 和 Mac OS X 上的安装过程 2.嵌入式数据库的安装.建库.建表.更新表结构以及数据导入导出等等具体过程记录 3,嵌 ...
- mono for android中使用dapper或petapoco对sqlite进行数据操作
在mono for android中使用dapper或petapoco,很简单,新建android 类库项目,直接把原来的文件复制过来,对Connection连接报错部分进行注释和修改就可以运行了.( ...
- UWP开发之ORM实践:如何使用Entity Framework Core做SQLite数据持久层?
选择SQLite的理由 在做UWP开发的时候我们首选的本地数据库一般都是Sqlite,我以前也不知道为啥?后来仔细研究了一下也是有原因的: 1,微软做的UWP应用大部分也是用Sqlite.或者说是微软 ...
- Unity3D连接sqlite数据库操作C#版
unity3d有自己对应的sqlite.dll分别需要三个文件 1.Mono.Data.Sqlite.dll 在unity安装文件“Unity\Editor\Data\MonoBleedingEdge ...
- 我的Android六章:Android中SQLite数据库操作
今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...
- (转)SQLLite数据操作
原文:http://dreamboy.blog.51cto.com/3180937/722352 SQLLite数据操作 一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存 ...
- 安卓 SQLite数据库操作实例
前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...
- 在安卓开发中使用SQLite数据库操作实例
前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...
- SQLite CRUD操作
SQLite CRUD操作代码实例: 1:首先创建一个继承了SQLiteOpenHelper类的MyDatabaseHelper类.实现他的onCreate(SQLiteDatabase db) on ...
随机推荐
- [ASP.NET]谈谈REST与ASP.NET Web API
13天的假期结束,赶紧回来充电了 本节目录 Web API简介 自我寄宿 IIS寄宿 调用Web API Web API原理 Web API简介 REST REST是“REpresentational ...
- Python入门笔记(18):Python函数(1):基础部分
一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/archive/2011/08/29/2153871.html 一般程序设计语言包含两种基本的抽象:过 ...
- [转载]Ubuntu14.04 LTS更新源
不同的网络状况连接以下源的速度不同, 建议在添加前手动验证以下源的连接速度(ping下就行),选择最快的源可以节省大批下载时间. 首先备份源列表: sudo cp /etc/apt/sources.l ...
- Unity3D脚本语言UnityScript初探
译者注: Unity3D中支持三种语言:JavaScript.C#.Boo,很多人不知道如何选择,通过这篇译文,我们可以搞清楚这三者语言的来龙去脉,对选择主语言有一定的借鉴意义. 首先,Unity是基 ...
- PHP学习笔记:使用session来存储用户的登录信息
session可以用来存储多种类型的数据,因此具有很多的用途,常用来存储用户的登录信息,购物车数据,或者一些临时使用的暂存数据等. 用户在登录成功以后,通常可以将用户的信息存储在session中,一般 ...
- jquery实现页面控件拖动效果js代码
;(function($) { var DragPanelId = "divContext"; var _idiffx = 0; var _idiffy = 0; var _Div ...
- Javascript面向对象编程(三) --- 非构造函数的继承
一.什么是"非构造函数"的继承? 比如,现在有一个对象,叫做"中国人". var Chinese = { nation:'中国' }; 还有一个对象,叫做&qu ...
- 如何在 在SharePoint 2013/2010 解决方案中添加 ashx (HttpHandler)
本文讲述如何在 在SharePoint 2013/2010 解决方案中添加 ashx (HttpHandler). 一般处理程序(HttpHandler)是·NET众多web组件的一种,ashx是其扩 ...
- SharePoint List来做项目管理
其实这是一个常见的问题,已经不仅仅只是一次用SharePoint List来做项目管理了. 核心 1. SharePoint List Lookup自己来实现项目的父子关系 2. 权限控制,直接控制在 ...
- Android Studio安装使用图文教程(转)
[开发环境] 物理机版本:Win 7旗舰版(64位) Java SDK版本:jdk1.8.0_20(64位) Android SDK版本:Android 4.4(API 20) Android Stu ...