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

}

}

}

转载于:https://www.cnblogs.com/daochong/p/5211453.html

SQLite数据操作相关推荐

  1. android: listview与sqlite数据操作实例

    ListView与Sqlite数据库绑定步骤: 1.将Sqlite数据库的内容查询出来并放入数组列表中,形成ListView的数据源: 2.适配器绑定数据源,显示在ListView item中. 本文 ...

  2. 数据存储之 SQLite 数据库操作(三)

    上一讲中我们讲到了SQLite数据库的操作方法 [数据存储之SQLite数据库操作(二)],我们主要是以SQL语句对数据库进行增删改查,这一讲我们来学习一下 Android 建议的对数据库的操作方法 ...

  3. 数据存储之 SQLite 数据库操作(二)

    上一讲我们讲解了SQLite数据库的创建[数据存储之 SQLite 数据库操作(一)],还有更新的操作,这一讲我们来讲解一下数据库的增删改查,这边的程序是对上一个程序进行修改,建议结合上一讲内容进行学 ...

  4. 数据存储之 SQLite 数据库操作(一)

    这一讲我们来讲解一下数据库的存储方式 ,SQLite数据库属于文本型的数据库,它是以文本的形式来保存的. 1. SQLite 数据库介绍 查看 Android API文档中 SQLite 的介绍    ...

  5. Qt下Sqlite数据库操作

    Sqlite数据库作为Qt项目开发中经常使用的一个轻量级的数据库,可以说是兼容性相对比较好的数据库之一(Sqlite就像Qt的亲儿子,如同微软兼容Access数据库一样).关于Sqlite和Qt的千丝 ...

  6. C# SQLite 数据库操作语句与文件视图管理器

    //sqlite数据库视图管理器 SQLiteSpy是一款专业的SQLite数据库管理,主要用于读取sqlite数据库,建立新的SQL查询,视图,复制和删除表.编辑单元格,以及查看索引,触发器和排序规 ...

  7. c# emnu 获取注释_C# 数据操作系列 - 19 FreeSql 入坑介绍

    0. 前言 前几天FreeSql的作者向我推荐了FreeSql框架,想让我帮忙写个文章介绍一下.嗯,想不到我也能带个货了.哈哈,开个玩笑-看了下觉得设计的挺有意思的,所以就谢了这篇文章. 简单介绍一下 ...

  8. Android 常用数据操作封装类案例

    1.DbHelper类 继承自SQLiteOpenHelper类,实现对数据库的基本操作 package com.example.utils;import android.content.Contex ...

  9. Android sqlite数据库操作通用框架AHibernate(一)-CRUD示例和使用步骤

    AHibernate简介 一句话描述,使用AHibernate框架进行sqlite数据库操作您将从重复性劳动中解脱出来. (一)支持功能: 1.自动建表,支持属性来自继承类:可根据注解自动完成建表,并 ...

最新文章

  1. predicate 列存储索引扫描_在SQL SERVER中导致索引查找变成索引扫描的问题分析
  2. (十二) 完整注释的代码摘录
  3. 《Swift 权威指南》——第6章,第6.7节常量和变量参数
  4. 通过maven命令将源代码编译成jar到本地仓库
  5. 算法题目中常见的几种输入小点-gets,cin,scanf,getline,sstream
  6. 配置 Powerline 到 Vim
  7. 基于python的视频监控系统_Python实现微信监控报警系统
  8. python turtle工具箱_python 库之 turtle(图形绘制) 开启新的快乐源泉
  9. linux变量循环赋值,shell脚本 循环变量赋值cf当前页面
  10. 玉伯 对 前端的 金玉良言
  11. ios tabtar 使用方法_Appium界面自动化测试(13)(iOS/Python):元素定位及操作
  12. error LNK2019: 无法解析的外部符号 main,函数 “int __cdecl __scrt_common_main_seh(void)“ (?__scrt_common_main_seh
  13. java同步锁-详细易懂
  14. Alcor(安国)AU6387量产修复(u盘修复)
  15. java实现录屏_javacv实现桌面端录屏
  16. 双眼融合训练一个月_最好的双眼视功能训练方法
  17. Unity快速入门教程-手机游戏开发前的准备(手机模拟器Simulator)
  18. 阿里云-密钥管理系统密钥导入功能
  19. Linux下基于UDP协议实现的聊天室项目(附源码)
  20. 每日一题【62】导数-公切线问题

热门文章

  1. 吴恩达深度学习4.4练习_Convolutional Neural Networks_Face Recognition for the Happy House
  2. 二叉树的深度优先遍历(DFS)与广度优先遍历(BFS)
  3. 如何快速清除 Ubuntu 的系统缓存
  4. node之koa核心代码
  5. 双网卡centos7 iptables防火墙与/etc/rc.d/rc.local开机运行
  6. windows 系统更新 WSUS的安装与部属
  7. [转]easyui 全部图标
  8. Apache20、lighttpd、nginx的比较[zt]
  9. python -day16-模块介绍
  10. ArcGIS中,一个点集里的点两两连线,比如有4个点,就连6条线