SqlLite 基本操作
1.数据类型
● SQLite将数据划分为以下⼏几种存储类型:
● integer : 整型值
● real : 浮点值
● text : ⽂文本字符串
● blob : ⼆二进制数据(⽐比如⽂文件)
● 实际上SQLite是⽆无类型的
● 就算声明为integer类型,还是能存储字符串⽂文本(主键除外)
● 建表时声明啥类型或者不声明类型都可以,也就意味着创表语句可以这么写:
• create table t_student(name, age);
#import "ViewController.h"
#import <sqlite3.h>
@interface ViewController ()
//1.创建数据库 (保存路径)
@property (nonatomic,assign)sqlite3 *db;
@end
@implementation ViewController
- (IBAction)insertData:(UIButton *)sender {
//3.增加 数据 (100条 数据随机)
for (int i = 0; i <2; i++) {
NSString *strName = [NSString stringWithFormat:@"8mingyeuxin-%d",i];
NSString *sqlStr = [NSString stringWithFormat:@"INSERT INTO t_student (name ,score)VALUES('%@',%.02f)",strName,arc4random_uniform(1000)/10.0];
//执行
int success = sqlite3_exec(_db, sqlStr.UTF8String, NULL, NULL, NULL);
if (success == SQLITE_OK) {
NSLog(@"添加成功!");
}else{
NSLog(@"添加失败!");
}
}
}
- (IBAction)deleteData:(UIButton *)sender {
//4.删除 数据 (70 - 80 分数)
NSString *sqlStr = @"DELETE FROM t_student WHERE score > 80.0";
//执行
int success = sqlite3_exec(_db, sqlStr.UTF8String, NULL, NULL, NULL);
if (success == SQLITE_OK) {
NSLog(@"删除成功!");
}else{
NSLog(@"删除失败!");
}
}
- (IBAction)updateData:(UIButton *)sender {
//5.修改 数据 (修改分数小于60.0为60.0)
NSString *sqlStr = @"UPDATE t_student SET score = 60.0 WHERE score < 60.0";
//执行
int success = sqlite3_exec(_db, sqlStr.UTF8String, NULL, NULL, NULL);
if (success == SQLITE_OK) {
NSLog(@"修改成功!");
}else{
NSLog(@"修改失败!");
}
}
- (IBAction)selectData:(UIButton *)sender {
//6.查询数据 ( score >= 60)
//NSString *sqlStr = @"SELECT * FROM t_student WHERE score > 60.0 ORDER BY score DESC;";
//查询数据 ( name 中带 8 数字)
NSString *sqlStr = @"SELECT * FROM t_student WHERE name LIKE '%ming%'";
//查询之后 把结果放在 stmt对象
// 保存所有的结果集
sqlite3_stmt *stmt = nil;
sqlite3_prepare_v2(_db, sqlStr.UTF8String, -1, &stmt, NULL);
//获取到所有结果 每一步 查询到一条记录
while (sqlite3_step(stmt) == SQLITE_ROW) {
//取出一条记录
// name TEXT column
const unsigned char * name = sqlite3_column_text(stmt, 1);
NSString *strName = [NSString stringWithCString:(const char *)name encoding:NSUTF8StringEncoding];
//score REAL
double score = sqlite3_column_double(stmt, 2);
NSLog(@"name = %@ score = %f",strName,score);
}
}
- (void)viewDidLoad {
[super viewDidLoad];
//打开数据库 如果没有就创建
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject]stringByAppendingPathComponent:@"data.sqlite"];
NSLog(@"%@",path);
int success = sqlite3_open(path.UTF8String, &_db);
if (success == SQLITE_OK) {
NSLog(@"创建数据库成功!");
//2.创建表 (指定字段 -> 需求: 保存 学生信息 id name score)
//用sql语句 来创建
//编写sql语句
NSString *str = @"CREATE TABLE IF NOT EXISTS t_student (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, score REAL NOT NULL)";
//执行sql语句
int success_t = sqlite3_exec(_db, str.UTF8String, NULL, NULL, NULL);
if (success_t == SQLITE_OK) {
NSLog(@"创建表成功!");
}else{
NSLog(@"创建表失败!");
}
}else{
NSLog(@"创建数据库失败!");
}
//关闭数据库
sqlite3_close(_db);
}
@end
SqlLite 基本操作的更多相关文章
- Python操作SQLLite(基本操作)
SQLite 是一个软件库,实现了自给自足的.无服务器的.零配置的.事务性的 SQL 数据库引擎.SQLite 是在世界上最广泛部署的 SQL 数据库引擎.SQLite 源代码不受版权限制. Pyth ...
- crawler碎碎念4 关于python requests、Beautiful Soup库、SQLlite的基本操作
Requests import requests from PIL import Image from io improt BytesTO import jason url = "..... ...
- Django/MySql数据库基本操作&ORM操作
数据库配置: #第一步在settings里面 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'dbna ...
- Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作
一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅仅memcached网站上列出的语言就有: ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- 三、Redis基本操作——List
小喵的唠叨话:前面我们介绍了Redis的string的数据结构的原理和操作.当时我们提到Redis的键值对不仅仅是字符串.而这次我们就要介绍Redis的第二个数据结构了,List(链表).由于List ...
- 二、Redis基本操作——String(实战篇)
小喵万万没想到,上一篇博客,居然已经被阅读600次了!!!让小喵感觉压力颇大.万一有写错的地方,岂不是会误导很多筒子们.所以,恳请大家,如果看到小喵的博客有什么不对的地方,请尽快指正!谢谢! 小喵的唠 ...
- 一、Redis基本操作——String(原理篇)
小喵的唠叨话:最近京东图书大减价,小喵手痒了就买了本<Redis设计与实现>[1]来看看.这里权当小喵看书的笔记啦.这一系列的模式,主要是先介绍Redis的实现原理(可能很大一部分会直接照 ...
随机推荐
- centos 单独安装apachebench
这两天在测试php性能优化方法. 为了做压力测试可观察效果,就选择了ApacheBench来作为压力测试工具.其实就是大家常说的ab. 但是这个工具是安装apache web server的时候自带的 ...
- 参加SFDC的感触
今天参加了SFDC. 第一次参加这样的技术大会,感触总是有点. 简单的记录如下 1.自动化运维在行业已经成为趋势,未来DevOps 作为开发和运维统一已经是新时代对开发人员的要求.公司架构一个自己的自 ...
- 再谈 Mysql解决中文乱码
一是要把数据库服务器的字符集设置为 utf8. 数据库的字符集会跟服务器的字符集一起变化, 也会变成 utf8: 在/etc/my.cnf中, 的 [mysqld]中, 设置 character-se ...
- Nginx设置线程数为整机内核数的俩倍!
Nginx设置线程数为整机内核数的俩倍!
- 10、代码块、构造代码块、静态代码块及main方法之间的关系
1.普通代码块: 在方法或语句中出现在{}之间的类容就称为普通代码块,简称代码块.普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行”,即顺序执行. /*下面第一个类时合法的 ...
- 移动Web之响应式布局的探讨
响应式布局的探讨 响应式布局的两种方式 基于百分比的布局 例:Bootstrap 基于rem的布局 例:淘宝触屏版 这两种布局都需要依赖于CSS3的media query来设置布局断点(或者通过js监 ...
- Stm32F107VCT6硬件资源
一直在用stm32系列的单片机,最近因为需要使用到以太网,所以采用了stm32f107vc这款芯片.对于存储资源一直不是非常清楚,今天专门到官网看了一下. 如下: RAM------>64kB ...
- BZOJ2802——[Poi2012]Warehouse Store
1.题目巨短,自己看看吧 2.分析:这道题,想了半天dp还是想不到,最后看题解发现是个贪心的思想,我们维护一个堆,如果这个人不能加入就把他和堆上最大的进行比较,然后搞搞就行了 #include < ...
- javadoc生成出现错误“编码 GBK 的不可映射字符”
https://my.oschina.net/tiancai/blog/155299 http://heweina2007.iteye.com/blog/1561387 http://blog.csd ...
- sublime自动生成头部注释
1.在tool->new snippet-创建一个新的snippet sublime text2 用snippet 创建文件头部信息 Snippets are smart templates t ...