02–SQLite操作一步到位

IOS SQLite语法基础,iossqlite语法

  分享SQLite语句的基础知识,是很基础的部分,只涉及”增”,”删”,”改”,”查”4个语法.不涉及表链接等内容.以后我会更新表链接的随笔.

  github上有一个SQL的Demo,包含增删改查. UI如图: url: —

1 #import <sqlite3.h> 2 3 @interface ViewController () 4 5
@property (assign,nonatomic)sqlite3 * database; 6 7 @end 8 9
@implementation ViewController 10 11 @synthesize database;

 

  创建一个学生表格,表格中有ID,name,age三个属性,ID是主键.

  创建表格 : create table if not exists t_student (id integer primary
key autoincrement, name text, age integer)”

  create table : 创建一个表格.  if not exists : 如果没有被创建过.
 t_student : 表格名字. id integer : ID integer类型(整数). primary key :
主键. autoincreament : 自动+1.  name text : name 类型(字符串)  age
integer类型(整数). 

 1     //把文本框转换成C语言
 2     const char * name = [_text1.text UTF8String];//名字
 3     const char * age = [_text2.text UTF8String];//年龄
 4     //增加一行语句
 5     char * sql = "insert into t_student (name, age) values (?,?)";
 6     /**
 7      sqlite 操作二进制数据需要用一个辅助的数据类型:sqlite3_stmt * 。
 8      这个数据类型 记录了一个“sql语句”。为什么我把 “sql语句” 用双引号引起来?因为你可以把 sqlite3_stmt * 所表示的内容看成是 sql语句,但是实际上它不是我们所熟知的sql语句。它是一个已经把sql语句解析了的、用sqlite自己标记记录的内部数据结构。
 9      */
10     sqlite3_stmt * stmt;
11     
12     //这里要执行sqlite语句了 (数据库,SQL语句,-1,&stmt,NULL); 增删改查都是用这一句代码
13     //不同的地方就是sql语句的不同,sqlite3_bind_text()中的值不同而已.
14     int result = sqlite3_prepare_v2(database, sql, -1, &stmt, NULL);
15     if (result == SQLITE_OK) {
16         sqlite3_bind_text(stmt, 1, name, -1, NULL);
17         sqlite3_bind_text(stmt, 2, age, -1, NULL);
18     }
19     else {
20         NSLog(@"准备失败");
21     }
22     //检验是否操作完成
23     if (sqlite3_step(stmt) == SQLITE_DONE) {
24         NSLog(@"操作完成");
25     }
26     else {
27         NSLog(@"操作失败");
28     }
29     //每次调用sqlite3_prepare 函数sqlite 会重新开辟sqlite3_stmt空间,
30     //所以在使用同一个sqlite3_stmt 指针再次调用sqlite3_prepare 前
31     //需要调用sqlite3_finalize先释放空间
32     sqlite3_finalize(stmt);

 

  向数据库中插入对象: insert into t_student (name, age) values (?,?)

  insert into t_student : 向表t_student中插入数据.  (name, age) :
数据名.  values (?,?) : 值(值1,值2).

 1  //把文本框转换成C语言
 2     const char * name = "张三";//名字
 3     const char * age = "20";//年龄
 4     //增加一行语句
 5     char * sql = "insert into t_student (name, age) values (?,?)";
 6     sqlite3_stmt * stmt;
 7     int result = sqlite3_prepare_v2(database, sql, -1, &stmt, NULL);
 8     if (result == SQLITE_OK) {
 9         sqlite3_bind_text(stmt, 1, name, -1, NULL);
10         sqlite3_bind_text(stmt, 2, age, -1, NULL);
11     }
12     else {
13         NSLog(@"准备失败");
14     }
15     //检验是否操作完成
16     if (sqlite3_step(stmt) == SQLITE_DONE) {
17         NSLog(@"操作完成");
18     }
19     else {
20         NSLog(@"操作失败");
21     }
22     //每次调用sqlite3_prepare 函数sqlite 会重新开辟sqlite3_stmt空间,
23     //所以在使用同一个sqlite3_stmt 指针再次调用sqlite3_prepare 前
24     //需要调用sqlite3_finalize先释放空间
25     sqlite3_finalize(stmt);

 

  删除数据库中的对象 : delete from t_student where id = ?

  delete from t_sudent : 删除t_student表格中的   删除id = ? 的数据 .

 1     int a = [_text1.text intValue];
 2     sqlite3_stmt * stmt;
 3     char * sql = "delete from t_student where id = ?";
 4     int result = sqlite3_prepare_v2(database, sql , -1, &stmt, NULL);
 5     if (result == SQLITE_OK) {
 6         result = sqlite3_bind_int(stmt, 1, a);
 7         if (result == SQLITE_OK) {
 8             result = sqlite3_step(stmt);
 9             if (result == SQLITE_DONE) {
10                 NSLog(@"删除成功");
11             }
12             else {
13                 NSLog(@"删除失败");
14             }
15         }
16     }
17     else {
18         NSLog(@"删除失败");
19     }
20     
21     sqlite3_finalize(stmt);

  

  更改数据 :  update t_student set name = ? where id = ?

  update t_student : 更新表格.  set name = : 设置名字为.  id =
多少的数据.

  就是修改id = ? 的名字.

 1    const char * ID = [_text1.text UTF8String];
 2     const char * newname = [_text2.text UTF8String];
 3     sqlite3_stmt * stmt;
 4     char * sql = "update t_student set name = ? where id = ?";
 5     int result = sqlite3_prepare_v2(database, sql , -1, &stmt, NULL);
 6     if (result == SQLITE_OK) {
 7         result = sqlite3_bind_text(stmt, 1, newname, -1, NULL);
 8         result = sqlite3_bind_text(stmt, 2, ID, -1, NULL);
 9         if (result != SQLITE_OK) {
10             NSLog(@"更新数据有问题");
11         }
12         if (sqlite3_step(stmt) != SQLITE_DONE) {
13             NSLog(@"更新数据不成功");
14         }
15     }
16     else {
17         NSLog(@"修改数据失败");
18     }
19     sqlite3_finalize(stmt);

 

  查询数据库中的所有数据  select id , name , age from t_student

  select : 查询.   id,name,age  : ID,名字,年龄 这三个属性.   from
t_student : 从t_student这个表格中 

 1 char * sql = "select id , name , age from t_student";
 2     sqlite3_stmt * stmt;
 3     int result = sqlite3_prepare_v2(database, sql , -1, &stmt, NULL);
 4     if (result == SQLITE_OK) {
 5         //sqlite3_step(stmt) == SQLITE_ROW 查询时使用
 6         while (sqlite3_step(stmt) == SQLITE_ROW) {
 7             int ID = sqlite3_column_int(stmt, 0);
 8             char * name = (char *)sqlite3_column_text(stmt, 1);
 9             NSString * strName = [NSString stringWithUTF8String:name];
10             int age = sqlite3_column_int(stmt, 2);
11             NSLog(@"%d,%@,%d",ID,strName,age);
12         }
13     }
14     sqlite3_finalize(stmt);

 

 

 

  

  

SQLite语法基础,iossqlite语法
分享SQLite语句的基础知识,是很基础的部分,只涉及”增”,”删”,”改”,”查”4个语法.不涉及表链接等内容.以后我会更…

  分享SQLite语句的基础知识,是很基础的部分,只涉及”增”,”删”,”改”,”查”4个语法.不涉及表链接等内容.以后我会更新表链接的随笔.

SQLite数据库(一):基本操作

SQLite
是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。
其特点是高度便携、使用方便、结构紧凑、高效、可靠。
与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下 –
只要确保SQLite的二进制文件存在即可开始创建、连接和使用数据库。如果您正在寻找一个嵌入式数据库项目或解决方案,SQLite是绝对值得考虑。

  github上有一个SQL的Demo,包含增删改查. UI如图: url: —

目录

SQLite数据库(一):基本操作… 1

目录… 1

一、SQLite介绍… 2

1.    什么是SQLite. 2

2.    什么是数据库… 2

3.    数据库是如何存储数据的… 2

4.    数据库存储数据的步骤… 2

5.    Navicat 2

6.    如何在程序运行过程中操作数据库中的数据… 3

7.    SQL语句的种类… 3

二、表—创,查,显示,删除… 3

1.    安装… 3

2.    创建创建首个 SQLite 数据库… 4

3.    创建表:… 4

4.    修改表结构(列,视图,索引)… 5

5.    查看创建的表… 6

6.    删除创建的表… 6

7.   设置格式化查询结果:… 6

三、其他 SQLite 输出命令… 6

四、字段类型… 7

五、数据:插入、更新、删除… 8

1.    数据—插入(一行叫记录)… 8

2.    更新数据… 8

3.    删除数据… 8

六、条件语句… 9

七、DQL语句:数据查询显示… 9

1.    精确查找… 9

2.    模糊查询… 9

八、起别名… 10

九、计算记录的数量… 10

十、排序… 10

十一、limit 11

十二、简单约束… 11

十三、主键… 12

十四、外键约束… 12

 

 

图片 1

一、SQLite介绍

  使用SQLite,首先要手动导入libsqlite3.tbd库. 点击工程 —- Build
Phases —- Link Binary With Libraries  点击 + 号,输入libsqlite3.
你会发现两个库libsqlite3.tbd 和 libsqlite3.0.tbd ,导入其中任意一个即可.
这两个库有什么区别呢? 你可以把 libsqlite3.0.tbd
看做是一个快捷方式, libsqlite3.tbd 是真正的库. 

1.      什么是SQLite

SQLite是一款轻型的嵌入式数据库。

它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。

它的处理速度比Mysql、PostgreSQL这两款著名的数据库都还快。

图片 2

2.      什么是数据库

1)        数据库(Database)是按照数据结构来组织、存储和管理数据的仓库

2)        数据库可以分为2大种类。

关系型数据库(主流)和   对象型数据库

3)        常用关系型数据库

PC端:Oracle、MySQL、SQL Server、Access、DB2、Sybase

嵌入式\移动客户端:SQLite

 

3.   数据库是如何存储数据的

数据库的存储结构和excel很像,以表(table)为单位。

  使用SQLite之前,你需要先了解一些SQL语句.这里就写一些简单的语句,详细的语法还要认真学习才能掌握.

4.   数据库存储数据的步骤

1)        新建一张表(table)

2)        添加多个字段(column,列,属性)

3)        添加多行记录(row.record,每行存放多个字段对应的值)

 

  SQLite使用的是C语言.iOS开发要转成char类型

5.      Navicat

Navicat是一款著名的数据库管理软件,支持大部分主流数据库(包括SQLite)

  使用前,导入sqlite3头文件,定义一个数据库

6.      如何在程序运行过程中操作数据库中的数据

1)        那得先学会使用SQL语句。

2)        SQL(structured query language):结构化查询语言

3)       
SQL是一种对关系型数据库中的数据进行定义和操作的语言。SQL语言简洁,语法简单,好学好用

4)       
SQL中的常用关键字:有select、insert、update、delete、from、create、where、                   
desc、 order、by、group、table、alter、view、index等等

5)        数据库中不可以使用关键字来命名表、字段

 

 1 #import <sqlite3.h>
 2 
 3 @interface ViewController ()
 4 
 5 @property (assign,nonatomic)sqlite3 * database;
 6 
 7 @end
 8 
 9 @implementation ViewController
10 
11 @synthesize database;

7.      SQL语句的种类

  1. 数据定义语句(DDL:Data Definition Language)

包括create和drop等操作

在数据库中创建新表或删除表(create table或 drop table)

  1. 数据操作语句(DML:Data Manipulation Language)

包括insert、update、delete等操作

上面的3种操作分别用于添加、修改、删除表中的数据

  1. 数据查询语句(DQL:Data Query Language)

可以用于查询获得表中的数据

关键字select是DQL(也是所有SQL)用得最多的操作

其他DQL常用的关键字有where,order by,group by和having

 

二、表—创,查,显示,删除

  创建一个学生表格,表格中有ID,name,age三个属性,ID是主键.

1.      安装

1)进入 SQL 下载页面:

2)下载 Windows 下的预编译二进制文件包:

sqlite-shell-win32-x86-<build#>.zip
sqlite-dll-win32-x86-<build#>.zip

注意: <build#> 是 sqlite 的编译版本号

将 zip 文件解压到你的磁盘,并将解压后的目录添加到系统的 PATH
变量中,以方便在命令行中执行 sqlite 命令。

可选: 如果你计划发布基于 sqlite
数据库的应用程序,你还需要下载源码以便编译和利用其 API

sqlite-amalgamation-<build#>.zip

SQLite on Linux

在 多个 Linux 发行版提供了方便的命令来获取 SQLite:

1)        /* For Debian or Ubuntu /*  

2)        $ sudo apt-get install sqlite3 sqlite3-dev  

 

3)        /* For RedHat, CentOS, or Fedora/*  

4)        $ yum install SQLite3 sqlite3-dev 

 

  创建表格 : create table if not exists t_student (id integer primary
key autoincrement, name text, age integer)”

2.      创建创建首个 SQLite 数据库

现在你已经安装了 SQLite
数据库,接下来我们创建首个数据库。在命令行窗口中输入如下命令来创建一个名为
test.db 的数据库

~$aqlite3

sqlite3 test.db 

Copyright @ 2015-2019 ca88 版权所有
网站地图xml地图