您现在的位置是:主页 > news > 网站如何盈利/seo教程 seo之家
网站如何盈利/seo教程 seo之家
admin2025/6/24 6:28:34【news】
简介网站如何盈利,seo教程 seo之家,企业网上注册,一个人可以做网站吗SQLite 有两种方式 第一种是在Ubuntu下使用命令行的方式来学习 第二种是在C语言编程来学习. C语言编程接口 数据库基本概念 数据(Data) 能够输入计算机并能被计算机程序识别和处理的信息集合. 不要狭义的认为 1234这些数字才是数据, 像英文单词hello只要能够被计算机识别的二进…
SQLite 有两种方式
第一种是在Ubuntu下使用命令行的方式来学习
第二种是在C语言编程来学习. C语言编程接口
数据库基本概念
数据(Data)
能够输入计算机并能被计算机程序识别和处理的信息集合.
不要狭义的认为 1234这些数字才是数据, 像英文单词hello只要能够被计算机识别的二进制 都统称为数据 .
数据库(Database)
数据库是在数据库管理系统 管理和控制之下, 存放在存储介质上的数据集合
数据库管理系统 : 指的是管理和操作数据库的这样的大型软件, 叫做数据库管理系统,
关系型数据 :
建立表格的时候数据之间与数据之间是依靠它的一种逻辑关系建立起来数据的存储关系的数据库.
嵌入式数据库 和其他数据库区别 :
嵌入式平台是一个资源,对资源要求比较高的平台,不可能安装大型的数据库 , 像MySql也有好几百M这个是资源受到限制了,
SQLite轻量级数据库,同样能完成大型数据库的绝大多数的功能,好处是体积小, 占用代码量小, 绝大多数的功能也实现了, 部分功能是进行阉割的,这部分功能支持的不全, 比如说对数据类型的检测, SQLite不支持对数据类型严格的检测,
SQLite3
1.无需安装和管理配置
2.是以文件的形式存储在磁盘上
3.可以实现不同的大小端字节序之间自由共享,
4.支持的数据大小2TB , 1TB是1024G
2TB能够存储下数据吗? 数据库不是用来存储电影的,一个电影一个G, 没有人在数据库下面存储电影,图片, 一般是用来存储咱们常见的类似于windows下的xlsx表文字形数据, 像电影图片存储在文件系统下面.
SQLite 数据库安装 :
- 本地安装
sudo dpkg -i *.deb - 在线安装
sudo apt-get install-sqlite3
(1) 在终端下输入以下命令
sudo apt-get install sqlite3
之后在终端下输入如下命令,查看下安装好的sqlite的版本
sqlite3 -version
我的环境下得到版本信息如下,表明sqlite3安装好了。
3.7.9 2011-11-01 00:52:41 c7c6050ef060877ebe77b41d959e9df13f8c9b5e
(2) 安装Sqlite3编译需要的工具包
如果,你需要的话可以安装该工具包。只是为了体验一把,可以不安装。该项是可选项。
sudo apt-get install libsqlite3-dev
SQLite3基本命令
实际上就是sql命令, 是所有数据库基本上通用的一种语言
.help 命令 帮助
以 ’ . '. 开头的命令叫做系统命令, 系统命令
不以 . 开头的命令叫sql命令但是要以 ; 号结尾的
.exit 退出当前程序 (退出)
.quit 退出
.databases 列出当前打开的数据库
.show
在大多数写的过程当中可能不小心输入一些出错的命令 比如输入了dsa; 就是一个语法错误的命令
Error : near “dsa” : syntax error
.databases 查看打开的数据库
.table 查看当前数据库下的数据表格
创建一张数据库的表 :
sqlite> create table stu(id Integer , name char , score Integer);
基本 的sql 命令, 不以 ’ . '开头, 但是要以 ’ ; '结尾
跟C语言不一样, 第一个要写变量的名字 id 然后才是类型 Integer 数据整型, 字段之间 ’ , '隔开 , name char 表示字符形式的类型, 按C语言解释这个名字应该是一个数组形式的字符串吗 ? 这个地方没有办法定义数组, 可以定义成char ,char就代表的一个字符串 . (定义成String也可以) . score Integer 这个创建命令是sql的基本命令 要以 ’ ; '号结尾 .
.schema 查看 表的结构图 你创建了几张表格 都会呈现出来
向数据库中插入数据 ,
char 要打 ’ ’ 单引号 或者 " " 双引号
insert into stu values(1001 , ’ ’ , 80);
查看数据库数据 (select * 意思是查看所有内容)
select * from stu;
有些情况, 比如说, 我并不知道他考了多少分数, 只知道他的学号 和名字 , 我们要进行部分插入, 部分插入要怎么操作呢 ?
insert into stu (id , name)values(1003, “wangwu”)
有些情况, 我们需要查看部分字段的值,
select name from stu; 只查看name这个字段的值
select name , score from stu; 只查看name和score字段
按照指定的条件来查
select * from stu where score = 80; 查看score=80的数据
select * from stu where score = 80 and id = 1001;查看score=80的数据并且id = 1001
两个条件都要满足 就用and连接 ,如果满足其中一个条件就行就用or来连接
select * from stu where score = 80 or name = ‘lisi’ ; 查看score =80的数据或者name = 'lisi’的数据
删除一条数据
delete from stu; 如果不加条件的话,就是把这张表给删除
delete from stu where id = 1001 ; 删除id =1001的数据
delete from stu where name = ‘lisi’ ; 删除name='lisi’的数据
sqlite并不会对对类型进行检查 , sqlite缺点 ,对类型不是严格的去匹配 .
删除delete 也同样可以使用 and 和 or
更新
更新一条记录
update stu set name = ‘wangwu’ where id =1001; 意思是将id为1001的数据里的name改成wangwu
update stu set name = ‘wangwu’ , score = 88 where id =1001; 意思是将id为1001的数据里的name改成wangwu, score改成 88
如果向表插入字段 插入一列 : (修改表)
alter table stu add column address char; 向表stu插入一列字段为address 类型为char
删除一列 :
sqlite3 不支持 ,直接删除一列
解决方式 :
1. --创建一张新的表 (create table 新表名 as select id , name , score from stu; )
2. --删除原有的表 (drop table 表名 删除一张表)
3. --将新表的名字改成原有的旧表名字,从而实现删除一列(alter table 表名 rename to 改变后表名)
drop table 表名 删除一张表
as 从某张表中提取字段
alter table 表名 rename to 改变后表名 (把表改名)
C语言操作SQLite数据库
打开 一个数据库
int sqlite3_open(char *path , sqlite3 **db)
第一个参数 : path 代表的是文件的路径 数据库路径名字
第二个参数 : db 操作数据库的一个句柄, 或者是一个二级指针,通过这个指针的来操作这样的一个函数 数据库操作句柄
返回值 : 成功SQLITE_OK , 出错生成错误码
关闭数据库
int sqlite3_close(sqlite3 *db);
参数 : 操作数据库的指针 .
返回值 : 成功SQLITE_OK , 出错生成错误码
const char *sqlite3_errmsg(sqlite3 *db);
通过句柄来获取到它的一个错误消息
返回值 : 返回值就是 一个 *型的地址 , 错误信息的首地址
执行一条sql语句
int sqlite3_exec(
sqlite3 * db,
const char *sql,
int (*callback)(void * arg,int ,char ** ,char **),
void * arg,
char **errmsg);
这个接口 是一个封装函数, 是sqlite3_prepare_v2(), sqlite3_step(), 和 sqlite3_finalize()函数封装的 .
将sqlite语句和C语言关联起来 ,
第一个参数 : db 数据库操作句柄
第二个参数 : sql 代表的是一条sql语句
第三个参数 : 回调函数 , 当这个sqlite3_exec在执行的时候, 它会调用这个callback的这个函数, 那么什么时候它执行呢 ? 只有sql为查询语句的时候才会执行此语句.
第四个参数 : void * 表示的给回调函数传递参数, 相当于 callback函数里的arg
第五个参数 : 得到的错误消息 errmsg
返回值 : 成功SQLITE_OK
这个方法里的
int (*callback)(void * arg,int ,char ** ,char **),其实就是一个回调函数
功能, 查询的结果 是一个函数指针类型, 所以在传递参数的时候应该传递一个函数名即可.
每找到一条记录就会自动执行一次回调函数 , 查询结果函数指针的形式
第一个参数 : 传递给回调函数的参数
第二个参数 : 表示的是字段的数目 , 字段指的是表里每一列的字段 , f_value是一个指针数组(二级指针), 这个数组当中每一个元素都是一个地址, 也就是说是,是表内的字段值的地址, 比如是 10001 ,的地址, zhangsan得地址, 80的地址(id,name,socre)
第三个参数 : 字段值的指针数组 .(指针数组,可以得到它的结果值) f_name 用来打印字段的名称的, id, name 或者socre
第四个参数 : 字段名的指针数组
返回值 : 成功返回 0 ,失败返回 -1;
这个方法里输入的sql语句结尾可以加 " ; " 也可以不加, 在C编程当中可以不加 " ; "号,
这里面的二级指针参数 ,需要我们定义一个一级指针取地址.
查询
更新
删除
另外一种查询的方式,不使用回调函数机制
int sqlite3_get_table(sqlite3 *db, const char *sql , char ***resultp, int *nrow, int ncolumn ,char **errmsg) ;
相当于开辟了一段存储空间,用来存储查询结果 ,用完之后一定要释放内存
第一个参数 : db 打开的句柄
第二个参数 : 要执行的sql语句
第三个参数 : 查询的结果 ,这个结果是用来指向sql的结果的指针(三级指针)这个三级指针传参,应该是一个二级指针, 定义了一个数组, 这个数组里面存储的是一个字符串的首地址 ,
第四个参数 : 行数 ,
第五个参数 : 列数的地址
第六个参数 : errmsg
列数是2 行数是3 , 加上列名, 一共是 2 * 4 = 8
传参常识 :
如果参数是一级指针,那我们就定义一个变量取地址
如果参数是一个二级指针,那我们就定义一个一级指针取地址
如果参数是一个三级指针,那我们就定义一个二级指针取地址
index = ncloumn; 意思是跨过第一行, 列名不打印
打印列表title
putchar(10); 意思是换行
%-11s是格式符,
- 表示左对齐,右边填充空格
11 是字宽
如
printf(“A%-11sA”,“B”);
则打印
AB A
//B后面跟了10个空格