sqlite的增删改查
//先设置全局变量
lazy var documentsPath: String = {
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
return paths.first!
}() //指针
var db: OpaquePointer? = nil
var stmt: OpaquePointer? = nil
// 创建或打开数据库
func createOrOpenDatabase() {
print("\(NSHomeDirectory())") //创建数据库文件路径,并要改成UTF-8类型
let path: NSString = "\(documentsPath)/test.sqlite3" as NSString
let filename = path.utf8String //判断打开数据库是否成功(若没有数据库,会自动生成),不成功则打印输入"create or open failed..."并关闭数据库
if sqlite3_open(filename, &db) != SQLITE_OK {
print("create or open failed...")
sqlite3_close(db)
}
} // 创建学生表
func createTable() {
//拼接sql语句并转为UTF-8
let string: NSString = "create table if not exists Student(id integer primary key autoincrement, sno text, name text, score integer)"
let sql = string.utf8String
//执行sql语句
if sqlite3_exec(db, sql, nil, nil, nil) != SQLITE_OK {
print("create table failed...")
sqlite3_close(db)
}
} //slq的新增操作
func insertStudent(sno: String, name: String, score: Int) {
// 准备SQL语句
let string: NSString = "insert into Student(sno, name, score) values(?, ?, ?)"
let sql = string.utf8String // 解析SQL文本语句
//sqlite3_prepare_v2解析
//参数1:当前数据库指针
//参数2:要解析的sql语句(默认以0结束)
//参数3:因为sql语句默认以0结束,为了出去那个0,所以是-1
//参数4:另外一个指针用于解析后存储,最后一个参数忘了,你直接写nil就可以了
if sqlite3_prepare_v2(db, sql, -, &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, , csno, -, nil)
sqlite3_bind_text(stmt, , cname, -, nil)
sqlite3_bind_int(stmt, , Int32(score)) // 执行SQL语句
if sqlite3_step(stmt) == SQLITE_ERROR {
sqlite3_close(db)
print("\(sno), insert failed...")
} else {
// 释放资源
sqlite3_finalize(stmt)
}
} // 修改学生数据
func updateStudent() {
// 准备SQL语句
let string: NSString = "update Student set score = 100 where name like 'a%'"
let sql = string.utf8String // 执行SQL语句
//sqlite3_exec后面的三个参数可以不用关,就写nil就可以了
if sqlite3_exec(db, sql, nil, nil, nil) != SQLITE_OK {
sqlite3_close(db)
print("update failed...")
}
} // 删除学生数据
func deleteStudents() {
// 准备SQL语句
let string: NSString = "delete from Student where score < 60"
let sql = string.utf8String // 执行SQL语句
if sqlite3_exec(db, sql, nil, nil, nil) != SQLITE_OK {
sqlite3_close(db)
print("delete failed...")
}
}
sqlite的增删改查的更多相关文章
- (转)SQLite数据库增删改查操作
原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...
- Android SQLite 数据库 增删改查操作
Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...
- IOS sqlite数据库增删改查
1.简单介绍 简单封装sqlite数据库操作类 BaseDB 用于完毕对sqlite的增删改查.使用前先导入libsqlite3.0.dylib库 2.BaseDB.h // // BaseDB.h ...
- 一步一步教你用c# entity framework6 连接 sqlite 实现增删改查
使用entity framework6 连接 SQLite 数据库 前言 很多小型应用程序中,都要使用数据库,而现在比较流行的本地数据库非SQLite莫属. 第一步:前期准备 开发环境:vs2015 ...
- 一、Android四大框架之ContentProvider的学习与运用,实现SQLite的增删改查。
本文系原创博客,文中不妥烦请指出,如需转载摘要请注明出处! ContentProvider的学习与运用 Alpha Dog 2016-04-13 10:27:06 首先,项目的地址:https:// ...
- 使用C#书写SQLite数据库增删改查语句(以及插入byte[]时遇到的问题总结)
在没有使用SQLite这种轻量级的数据库之前,只使用过Sqlserver2008进行数据的增删改查,公司使用的是大型的ORACLE数据库,还没有真正的会使用它.那时候觉得数据库很庞大,然而遇到SQLi ...
- IOS Sqlite用户界面增删改查案例
1.案例简单介绍 对SQLite操作进行了简单的封装,将对数据表操作转变成对对象的操作,并通过UI界面完毕对用户表的增.删.改.查,执行界面例如以下图所看到的 a 2.项目project文件夹 Use ...
- Sqlite创建增删改查
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 简单使用SQLite 的增删改查
1.插入 第一种方式 INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 200 ...
随机推荐
- Hadoop内功修炼
IT十八掌<大数据内功修炼系列课程>强势推出!由实战派名师徐培成亲自操刀,学完做不了大数据我们负全责!2015.12.21前,优惠价:4999(名额已不多!)2015.12.31前,优惠价 ...
- CSS3中box-sizing的理解
box-sizing属性可以为三个值之一:content-box(默认),border-box,padding-box,inherit(继承父级box-sizing 属性的值.) content-bo ...
- AngularJS之Directive,scope,$parse
AngularJS内幕详解之 Directive AngularJS内幕详解之 Scope AngularJS的指令(Directive) compile和link的区别及使用示例 浅谈Angular ...
- Spark Streaming源码解读之数据清理内幕彻底解密
本期内容 : Spark Streaming数据清理原理和现象 Spark Streaming数据清理代码解析 Spark Streaming一直在运行的,在计算的过程中会不断的产生RDD ,如每秒钟 ...
- MongoDB(七)MongoDb数据结构
首先,向数据库插入一条bjson数据 首先是定义文档,然后使用admin用户名密码登录,进入test数据库,向test数据库中插入此文档("表名称和表中的记录") 插入结果,查看m ...
- cnblogs,我回来了
之前是在Github上搭了个博客,原因只有一个:可以弄个比较个性的域名,逼格高. 不过用起来倒是麻烦,一是经常纠结自己的主页是不是不够逼格?二就是身在墙内,访问速度不理想. 所以,还是安心的在这里,写 ...
- 采用TCP协议实现PIC18F97J60 ethernet bootloader
了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). TCP/IP Stac ...
- Leetcode4:Median of Two Sorted Arrays@Python
There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two ...
- td的所有style
td.style.clear= td.style.posRight=0 td.style.backgroundRepeat= td.style.borderTopStyle= td.style.mar ...
- C语言中内存操作函数
一.malloc/calloc 名称: Malloc/calloc 功能: 动态内存分配函数 头文件: #include <stdlib.h> 函数原形: void *malloc(s ...