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. nuget包重装

    Update-Package -Reinstall Update-Package -reinstall -ProjectName Cardin.HeartCare.Service.ChatServic ...

  2. Python

    语法 #!/usr/bin/python 注释:# 编码:# -*- coding: UTF-8 -*- 缩进 运算符 算数运算符 + 加 - 两个对象相加 a + b 输出结果 30 - 减 - 得 ...

  3. HTML 5 胜出:XHTML2 宣告夭折

    自HTML 5 和XHTML 2规范草稿公布以来,一直存在很大的争议.HTML 5是由包括Google.Mirosoft.Mozilla.Opera.Apple在内多家浏览器厂商共同起草的下一代web ...

  4. Excel——使用OFFSET、MATCH、COUNTA实现二级菜单

    如图所示,接下来提供两种办法实现: 1.将A.B.C.D定义为名称NAME. 2.设置一级菜单单元格数据有效性为NAME. 3.设置二级菜单格数据有效为: =OFFSET($A$1,MATCH($A6 ...

  5. eclipse安装spring的插件

    第一步:插件下载 http://spring.io/tools/sts/all 安装包链接 第二步:插件安装 第三步:安装成功检测

  6. java基础 布局管理器

    概念: 组建在容器(比如JFrame)中的位置和 大小 是由布局管理器来决定的.所有的容器都会使用一个布局管理器,通过它来自动进行组建的布局管理. 种类: java共提供了物种布局管理器:流式布局管理 ...

  7. Web干货存档

    今天看了某乎,介绍了web一些基本东西,讲的很好,随手留下https://www.zhihu.com/question/22689579 web开发者文档,纯干货   https://develope ...

  8. Home 安转beta版软件

    今天想装测试版的cocoapods,用 brew install cocoapods 后,总是安装稳定版,就是1.1.0,不是最新的beta版,发现用下面这个命令可以装最新beta版 brew ins ...

  9. 2015 史考特(Scottrade)开户指南 + 招商银行香港一卡通汇款【图文教程】

    最近刚开始炒美股.总的来说分为两步:一是开户,即选一个美股券商开设股票交易账户:二是汇款注资,把人民币换成美元转账到股票交易账户上.上述第一点其实相对简单,美股券商大多都对美国以外的外国人开放申请,且 ...

  10. 【日记】thinkphp项目阿里云ECS服务器部署

    项目本地开发告一段落.准备上传到服务器上测试 技术组成 thinkphp+mysql+阿里ECS  代码管理方式git 一.阿里ECS服务器配置 1.因为线上已经有几个站点了.所以要配置ngnix多站 ...