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. 微信jsApI及微信分享对应在手机浏览器的调用总结。

    摘录自别人的博客: 第一篇:微信内置浏览器的JsAPI(WeixinJSBridge续) 之前有写过几篇关于微信内置浏览器(WebView)中特有的Javascript API(Javascript ...

  2. JavaScript 秘密花园 学习心得

    目的 记录一下学习心得,便于以后复习,内容是比较基础的...但是很多内容我还是不知道... 对象 对象使用和属性 1.JavaScript 中所有变量都可以当作对象使用,除了两个例外 null和dun ...

  3. Money, save or spend, this is a problem .

    Win a lottery? Had a great hand at the casino? Did fortune shine upon you in the stock market? 彩票中了大 ...

  4. Web 常用功能测试方法

    功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能.常用的测试方法如下: 1. 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确. 2. 相 ...

  5. flickrf 分布式主键生成方案【mysql】

    [相关链接:http://blog.csdn.net/bluishglc/article/details/7710738] 具体做法: 1:找两台服务器,分别配置: TicketServer1: au ...

  6. linux系统内核流转浅析

    SJTUBEAR  原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 我们通过简单 ...

  7. 我的页面定制CSS代码(SimpleGamboge皮肤)

    我的页面定制CSS代码,针对博客园SimpleGamboge皮肤. 调整: 1.左上图片更换为自己的头像 2.扩大左侧栏宽度,缩小右侧主栏宽度宽度 3.扩大内容页面的评论区宽度,工具图标靠左 4.去广 ...

  8. MVC中渲染页面

    mvc中当返回的字符带有html代码的时候,可以直接使用@Html.Raw(Model.description)这句代码的意思就是返回不是html编码,因此用了这句代码就不需要单独再转换一次

  9. linux 命令02

    cp 文件 路径 文件拷贝 cp -a 目录 路径 拷贝目录 cd .. 回到上一级目录 mv 需要移动目录(文件) 移动目的地 移动目录(文件) pwd 查看用户当前所在路径 ls 查看目录列表 m ...

  10. 深入理解jsonp跨域请求原理

    在进行网站开发的过程中经常会用到第三方的数据,但是由于同源策略的限制导致ajax不能发送请求,因此也无法获得数据.解决ajax的跨域问题有两种方法: 一.jsop 二.XMLHttpRequest2中 ...