加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite数据库实际运用

发布时间:2020-12-12 23:50:32 所属栏目:百科 来源:网络整理
导读:摘要 SQLite在我们这些运用过其他数据库的人手里,其实根本就不算是数据库,因为sqlite实在是太小了,而且sqlite中的数据类型 (name text,age integer,phoneNo text)都是假的,只是为了和其他数据库一样操作而已!下面是SQLite中经常运用的操作语句 sqlite
1

// pyViewController.m
// 010601-SQLite
//
// Created by panyong on 14-1-6.
// Copyright (c) 2014年 panyong. All rights reserved.
//

import “pyViewController.h”

import “NSString+DocDir.h”

import

import “pyPerson.h”

@interfacepyViewController ()
{

sqlite3 *_db;

}
@end

@implementation pyViewController

  • (void)viewDidLoad
    {
    [super viewDidLoad];
    //创建数据库
    [self createSQLite];

    //创建数据库表
    [self createTableWithName:@“userInfo”];

    //添加数据
    // 3. 增加个人记录
    // 自己编写程序,生成随机的数据,以便在单机开发中测试
    // NSArrayarray = @[@“李四”,@“王五”,@“赵六”,@“刘老头”];
    //
    // for (NSInteger i = 0; i < 50; i++) {
    // NSString
    name = [NSString stringWithFormat:@“%@%04d”,array[arc4random_uniform(array.count)],arc4random_uniform(10000)];
    // NSInteger age = arc4random_uniform(20) + 18;
    // CGFloat height = arc4random_uniform(30) / 100.0f + 1.5f;
    //
    // pyPerson *p = [pyPerson pyPersonWithID:0 withName:name withGender:1 withAge:age withHeight:height] ;
    //
    // [self addValue:p];
    // }

    //4查询数据
    [self selectData];
    }

pragma mark –创建数据库

-(void)createSQLite
{

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 //数据库的路径NSString *name = @"opensqlite.db" ;NSString *docDir = [name NSStringWithDocDir];//创建数据库/**sqlite3_open1) 如果数据库存在,直接打开2) 如果数据库不存在,先创建数据库文件,再打开*///NSLog(@"%@",docDir);_db = NULL;//这里一定要是const转换为常量,因为这是c语言的库if (SQLITE_OK == sqlite3_open([docDir UTF8String],&_db)) {NSLog(@"数据库打开成功");} else {"数据库打开失败");}

}
//SQLITE_API int sqlite3_exec(
// sqlite3,/An open database/
// const char
sql,/SQL to be evaluated/
// int (callback)(void,int,char,char),/Callback function/
// void,/1st argument to callback/
// charerrmsg /
Error msg written here */
//);

pragma mark -添加数据库表

-(void)createTableWithName:(NSString *)string
{

? 10 // 创建数据库 T_ 表示的是表的前缀,NSString *sql = @"CREATE TABLE IF NOT EXISTS T_Person (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,name TEXT,gender INTEGER,age INTEGER,height REAL)";//NSString *sql = [NSString stringWithFormat:@"create table '%@'",string];char *err = nil ; (SQLITE_OK == sqlite3_exec(_db,[sql UTF8String],nil,&err)) {"创建成功");}else{"数据库表创建失败 %s",err);}

}

pragma mark -设置添加数据

-(void)addValue:(pyPerson *)p
{

? 3 NSString *str = [NSString stringWithFormat:@"INSERT INTO T_Person (name,height) VALUES ('%@',%d,%f)"//执行数据[self sql:str];

}

pragma mark -执行方法

-(void)sql:(NSString *)str
{

7 *err = NULL ;"成功插入数据");else{"插入数据失败"}

}

pragma mark 查询数据

-(void)selectData
{

14 NSMutableArray *arr = Nil ;//1.查询语句"select id,height from T_Person ";//2.检测查询语句是否错误sqlite3_stmt *stmt = Nil ; (SQLITE_OK ==sqlite3_prepare_v2(_db,-1//sqlite3_step(stmt)是获取while (SQLITE_ROW == sqlite3_step(stmt)) {NSInteger i = sqlite3_column_int(stmt,0);const unsigned *name = sqlite3_column_text(stmt,monospace!important; border:0px!important; bottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:1.1em!important; outline:0px!important; overflow:visible!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-size:1em!important; min-height:inherit!important; background:none!important">);int age = sqlite3_column_int(stmt,0)!important; bottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:1.1em!important; outline:0px!important; overflow:visible!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-size:1em!important; min-height:inherit!important; background:none!important">2); gender = sqlite3_column_int(stmt,0)!important; bottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:1.1em!important; outline:0px!important; overflow:visible!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-size:1em!important; min-height:inherit!important; background:none!important">3);CGFloat height = sqlite3_column_int(stmt,0)!important; bottom:auto!important; float:none!important; height:auto!important; left:auto!important; line-height:1.1em!important; outline:0px!important; overflow:visible!important; position:static!important; right:auto!important; top:auto!important; vertical-align:baseline!important; width:auto!important; font-size:1em!important; min-height:inherit!important; background:none!important">4);NSString *myname = [NSString stringWithUTF8String:(const char *)name];

// NSLog(@“%@—%d”,myname,age);

? 9 pyPerson *person = [pyPerson pyPersonWithID:i withName:myname withGender:gender withAge:age withHeight:height];[arr addObject:person];"%@---%d"}else{"语法错误");} }

@end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!


摘要 SQLite在我们这些运用过其他数据库的人手里,其实根本就不算是数据库,因为sqlite实在是太小了,而且sqlite中的数据类型 (name text,age integer,phoneNo text)都是假的,只是为了和其他数据库一样操作而已!下面是SQLite中经常运用的操作语句 sqlite 数据库 常用实例

目录[-]

  • import “pyViewController.h”
  • import “NSString+DocDir.h”
  • import
  • import “pyPerson.h”
  • pragma mark –创建数据库
  • pragma mark -添加数据库表
  • pragma mark -设置添加数据
  • pragma mark -执行方法
  • pragma mark 查询数据
  • SQLite在我们这些运用过其他数据库的人手里,其实根本就不算是数据库,因为sqlite实在是太小了,而且sqlite中的数据类型 (name text,phoneNo text)都是假的,只是为了和其他数据库一样操作而已!下面是SQLite中经常运用的操作语句

    – 创建数据表,定义存储数据信息表的结构
    –CREATE TABLE T_Student (name text,phoneNo text);
    – 删除数据表,通常在上需要使用某一个表的时候,才会用到,日常开发中极少会用到此命令
    –DROP TABLE T_Student;

    – 新增数据内容,在SQL语句中,字符串需要用单引号引起
    – 插入语句的语法格式:
    – INSERT INTO 表吊 (字段1,字段2,…) VALUES (字段1数值,字段2数值,…)
    – INSERT INTO T_Person (name,age,gender,height) VALUES ('小花1',20,1,1.62);

    – 更新数据库内容
    – 更新所有记录
    – UPDATE T_Person SET name = '王二麻子';

    – 条件修改 WHERE (要修改、操作的记录在哪里)
    – UPDATE T_Person SET name = '小芳' WHERE gender = 1;

    – 使用AND可以设置与条件
    – 使用OR可以设置或条件
    – 更新记录的语法格式
    – UPDATE 表吊 SET 字段1 = 字段1数值,字段2 = 字段2数值,… WHERE 要修改的条件
    – UPDATE T_Person SET name = '西门吹雪',age = 45 WHERE age = 60 AND height = 1.65;
    – UPDATE T_Person SET name = '悟空' WHERE age = 18 OR height = 1.72;

    – 删除记录
    – 删除的语法格式
    – DELETE FROM 表吊 WHERE 要删除的条件
    – DELETE FROM T_Person WHERE height = 1.8;

    – 查询指令
    – SELECT * FROM T_Person;
    – 条件查询
    – 查询所有的男的
    – SELECT * FROM T_Person WHERE gender = 1;
    – 查询年龄大于10岁,同时是男士
    – SELECT * FROM T_Person WHERE age > 10 AND gender = 0;
    – 查询Person表中的记录总数
    — SELECT count(*) FROM T_Person;
    – 查询最高的身高
    – SELECT max(height) FROM T_Person;
    – SELECT min(age) FROM T_Person;
    – 查询所有男士的平均身高
    — SELECT avg(height) FROM T_Person WHERE gender = 0;

    – 分页查询
    – 从第0条记录开始,查询3条记录
    – LIMIT 的第一个参数表示:从第几行记录开始查询,起始行数是0
    – LIMIT 的第二个参数表示:本次查询需要查询的记录数量
    – SELECT * FROM T_Person LIMIT 0,3;
    – SELECT * FROM T_Person LIMIT 3,3;
    – SELECT * FROM T_Person LIMIT 6,3;

    – 排序
    – ORDER BY 要排序的字段吊
    – ASC 表示升序
    – DESC 表示降序
    – 如果有多个字段参与排序,先排第一个字段,让后依次类推,即:第一个字段的排序优先级最高!
    SELECT height,name,age FROM T_Person ORDER BY age ASC,height DESC;

    介绍完上面的基本操作语句之后,我们运用sqlite来做一个实例:
    /**
    SQLite3使用步骤

    名词解释:handle句柄,在C语言中,通常把用于控制某类东西的叫做句柄,实际上是一个指针。
    通过这个指针就可以达到操作对象的目的。

    SQLITE_OK 表示数据库操作成功

    1. 先要有一个数据库,放在Bundle中还是放在沙盒里?

    2. MainBundle是只读的,如果是菜谱、中国全史只是看不用修改的可以放在Bundle中

    3. 如果需要对数据进行操作,数据库文件应该放在沙盒中!

      sqlite3_open 打开数据库

      • 如果数据库已经存在,直接打开
      • 如果数据库不存在,新建一个空白的数据库(0KB),然后再打开
    4. 创建数据表

    5. 定义数据操作SQL

    6. 调用sqlite3_exec执行SQL

      提示:为了避免重复建表,可以在建表SQL中增加 IF NOT EXISTS

    7. 单步执行操作
      1> 增加数据
      2> 修改数据
      3> 删除数据
      定义SQL执行
      SQLITE_OK == sqlite3_exec

    8. 查询语句
      1> 准备SQL
      2> 检查SQL语句是否正确 sqlite3_prepare_v2
      3> 单步执行,依次获取查询到的记录 SQLITE_ROW == sqlite3_step(stmt
      4> 按照查询顺序,依次取出每一个字段的内容

      sqlite3_column_text 取字符串
      sqlite3_column_int 取整数
      sqlite3_column_double 取浮点数

      操作SQLite数据库需要5个方法
      sqlite3_open
      sqlite3_exec

      sqlite3_prepare_v2
      sqlite3_step

      sqlite3_column_text 取字符串
      sqlite3_column_int 取整数
      sqlite3_column_double 取浮点数
      两个枚举
      SQLITE_OK
      SQLITE_ROW
      */

    下面是代码部分,我的pyPerson类就省略了哦!,还有沙盒存储的sqlite路径也省略了哦!!!!!

    ?