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 基本操作的更多相关文章

  1. Python操作SQLLite(基本操作)

    SQLite 是一个软件库,实现了自给自足的.无服务器的.零配置的.事务性的 SQL 数据库引擎.SQLite 是在世界上最广泛部署的 SQL 数据库引擎.SQLite 源代码不受版权限制. Pyth ...

  2. crawler碎碎念4 关于python requests、Beautiful Soup库、SQLlite的基本操作

    Requests import requests from PIL import Image from io improt BytesTO import jason url = "..... ...

  3. Django/MySql数据库基本操作&ORM操作

    数据库配置: #第一步在settings里面 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'dbna ...

  4. Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作

    一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅仅memcached网站上列出的语言就有: ...

  5. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

  6. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

  7. 三、Redis基本操作——List

    小喵的唠叨话:前面我们介绍了Redis的string的数据结构的原理和操作.当时我们提到Redis的键值对不仅仅是字符串.而这次我们就要介绍Redis的第二个数据结构了,List(链表).由于List ...

  8. 二、Redis基本操作——String(实战篇)

    小喵万万没想到,上一篇博客,居然已经被阅读600次了!!!让小喵感觉压力颇大.万一有写错的地方,岂不是会误导很多筒子们.所以,恳请大家,如果看到小喵的博客有什么不对的地方,请尽快指正!谢谢! 小喵的唠 ...

  9. 一、Redis基本操作——String(原理篇)

    小喵的唠叨话:最近京东图书大减价,小喵手痒了就买了本<Redis设计与实现>[1]来看看.这里权当小喵看书的笔记啦.这一系列的模式,主要是先介绍Redis的实现原理(可能很大一部分会直接照 ...

随机推荐

  1. 阿里云提示Discuz uc.key泄露导致代码注入漏洞uc.php的解决方法

    适用所有用UC整合 阿里云提示漏洞: discuz中的/api/uc.php存在代码写入漏洞,导致黑客可写入恶意代码获取uckey,.......... 漏洞名称:Discuz uc.key泄露导致代 ...

  2. JS 工具类

    之前工作用的JavaScript比较多,总结了一下工具类,和大家分享一下,有不足之处还请多多见谅!! 1. 数组工具类(arrayUtils) var arrayUtils = {}; (functi ...

  3. Apache Shiro 学习记录4

    今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...

  4. Github .gitignore详解

    在使用git作版本控制时,git会默认把git控制的文件夹里面的所有文件都加入到版本控制.但是在实践中,我们经常会遇到不想某些文件或文件夹被git追踪的情况.比如logs文件.代码构建过程中产生的一些 ...

  5. wireshark抓包工具简介以及tcp三次握手的一些含义

    wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必须了解网络协议,否则就看不懂wireshark了.为了安全考虑, ...

  6. 使用Cocos2d-x实现微信“天天爱消除”炫耀button特效

    引言Cocos2d-x引擎中有很多Action,这样可以方便的让开发者调用相应的Action去完成一些动作,例如:移动,弹跳,淡入淡出等.可在实际的开发过程中,由于游戏的需要,显然地,引擎自带的Act ...

  7. Unity3D 接完GVR SDk后如何插入自己的java代码

    1.用Eclipse创建一个Android Application Project 2.用压缩软件打开gvr_android_common.aar和unitygvractivity.aar,分别把里面 ...

  8. 转载一篇关于unicode字符编码的文章

    很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们认为8个开关状态作为原子单位很好,于是他们把这称为"字节". 再后来,他们又做了一 ...

  9. Linux下安装MongoDB

    MongoDB是一个C++编写的基于分布式文件存储的数据库,是一个介于关系和非关系之间的数据库,当然也属于NoSQL的行列,存储方式和Redis类似,是json格式的kav-value存储方式,只是R ...

  10. Andrew Ng在coursera上的ML课程_知识点笔记_(1)

    1.Feature Scaling(特征缩放): 如上图所示,x1是房屋面积,x2是房间个数,若不进行特征缩放,则代价函数J的曲线近似为一个瘦长的椭圆(我暂时这么理解,θ1和θ2分别是x1和x2的权值 ...