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. 关于JSP中<body onload="fun()">body标签中onload中函数不执行问题

    问题描述: 在一个页面中,我们经常会初始化一下数据,而且会在指定的DOM元素初始化数据,这时候我们就会使用<body onload="fun()">来加载我们的数据.o ...

  2. 关于在Xcode控制台打印的注意点

    注意!!在控制台中打印语句的返回值,这句代码也算是被执行过了一次 比如在下列代码的if语句执行之前,现在控制台打印 [_dataBaseexecuteUpdate:createSql] 的布尔值 if ...

  3. Android通过Http连接MySQL 实现登陆/注册(数据库+服务器+客户端)

    写在最前: 在实际开发中,相信每个项目都会有用户登陆注册功能,这个实现的方法很多,下面是我实现的方法,供大家交流. 新人发帖,万分紧张,怎么样才能装作一副经常发帖的样子不被别人看出来呢-,- ? 好了 ...

  4. Linux快速上手

    1.Linux系统架构 内核(kernel) 内存管理(mm) Linux内存特性无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高Lin ...

  5. 使用Docker Mysql 5.7

    Mysql已经提供了Docker image,可以很方便开启一个mysql服务器.官方介绍了两种连接方式, 在其他App Docker 容器中通过--link访问Mysql服务端容器 启动另外一个My ...

  6. required - HTML5里的input标签的required属性提示文字修改

    input 里面增加这样的语句: <input type="text" placeholder="您的姓名" required oninvalid=&qu ...

  7. C#微信公众号开发系列教程三(消息体签名及加解密)

    http://www.cnblogs.com/zskbll/p/4139039.html C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C ...

  8. android键盘输入读取

    android键盘输入读取  监控android键盘输入方式有两种,一种在java层实现,重写onKeyDown和onKeyUp方法.另一种是在jni层实现,监控/dev/input/event0键盘 ...

  9. python之路十五

    CSS position 属性 定义和用法position 属性规定元素的定位类型.说明这个属性定义建立元素布局所用的定位机制.任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身 ...

  10. Unity 官网教程 -- Multiplayer Networking

    教程网址:https://unity3d.com/cn/learn/tutorials/topics/multiplayer-networking/introduction-simple-multip ...