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 ...
随机推荐
- Linux内核模块设计
内核的设计有两种方式:单内核和微内核,两者各有优劣,关于两者的比较可以参见wiki.windowds和Solaris采用微内核结构. Linux内核采用单内核结构,设计比较简单,但单内核的理念是把所有 ...
- C#泛型代理、泛型接口、泛型类型、泛型方法
//http://www.cnblogs.com/JeffreySun/archive/2012/11/14/2770211.html //http://www.baqima.com/a/2628.h ...
- Linux学习笔记——重点推荐的Linux网络在线学习资源
首先非常感谢百度,感谢网络的搜索引擎技术,也非常感谢学习资源的贡献者和组织! 1:http://billie66.github.io/TLCL/book/zh/ 2:http://www.ha97. ...
- http请求提交cookie
package leadsServerTest;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient ...
- md5算法
md5算法 不可逆的:原文-->密文.用系统的API可以实现: 123456 ---密文 1987 ----密文: 算法步骤: 1.用每个byte去和11111111做与运算并且得到的是int类 ...
- CSS 宝典
input点击时候,有个灰块 outline:medium; -webkit-tap-highlight-color:rgba(0,0,0,0); -webkit-user-modify:read-w ...
- OAuth认证
OAuth简介 OAuth是在不提供用户名和密码的情况之下,授权第三方应用访问Web资源的安全协议. OAuth允许用户提供一个令牌给第三方网站,一个令牌对应一个特定的第三方网站,同时该令牌只能在特定 ...
- Tcp/IP
在数据传输完毕之后,通信双方都可以发出释放连接的请求.释放连接的过程为如上图所示: 1)数据传输结束后,主机A的应用进程先向其TCP发出释放连接请求,不在发送数据.TCP通知对方要释放从A ...
- sass安装与使用
安装: 1.安装ruby 2.安装Koala,用于sass编译 3.gem install sass(mac电脑安装如果安装报错,一般是权限问题,没有权限安装到ruby下面,因此可以尝试sudo ge ...
- LeetCode-179. Largest Number
179. Largest Number Given a list of non negative integers, arrange them such that they form the larg ...