数据库 —>数据库编程

news2024/11/15 3:40:07

数据库,用来保存信息,和文件有同样的作用,但是却有别于文件;

        文件掉电不会消失,一般用来存储软件配置,想要保存的东西,他在查找的时候是一行一行的去查找,效率不高;

        数据库存储可以理解为表格,查找时很是方便快捷,用于对表的增删改查;

数据库的分类:

关系型数据库:

        1.Oracle;

        2.MYSQL;

        3.sqlite;

非关系型数据库;

        Redis;

SQL语言:

现在我们来创建一个student.db 的数据库;

sqlite3 student.db

接下来创建一个学生表(student);

create table student(id intger primary key asc, 姓名 text, 性别 text, 年龄 intger);

每个语句结束后都需要加上分号,表示语句的结束;id 后面的 intger 是id的类型,为整形,primary key 是一个约束,表示主键值,是唯一的,可以理解为给每次输入的内容从1开始的排序,asc 表示按升序排列,text表示文本字符串;

接下来给这张学生表里插入数据;

insert into student values (NULL,"小王","男",20);
insert into student values (NULL,"小李","女",22);
insert into student values (NULL,"小猫","猫",8);
insert into student values (NULL,"小狗","狗",3);
insert into student values (NULL,"小金","鱼",2);
insert into student values (NULL,"大猩猩","猴",12);

对于字符型的需要用引号引起来, 里面用到的所有标点符号都必须为英文形式;

接下来查看一下我们生成的表;

.header on
.mode column   //前两句对表的格式化输出
select * from student;

接下来对大猩猩的年龄进行更改;

update student set 年龄 = 17 where 姓名 = "大猩猩";

删除小王的信息;

delect from student where 姓名 = "小王";

多表联合查询:

1.交叉连接 cross join;//将表A和表B中想要查询的信息都列出来

2. 内连接 inner join;  //将表A和表B中想要查询的信息的共同信息列出来 ,就像A和B的交集

3,.外连接 outer join;// 将外连接表的想要的信息都列出来

数据库编程:

数据库编程语句有很多,可以访问此链接进行查看:https://www.sqlite.org/c3ref/funclist.html

最基础的只有三个,打开->执行语句->关闭;

1.sqlite3_open(const char *filename,   sqlite3 **ppDb);

// filename要打开的数据库;

ppDb句柄;

成功返回SQLITE_OK,失败返回错误码;

2.sqlite3_exec(  sqlite3*,const char *sql,  int (*callback)(void*,int,char**,char**),  void *, char **errmsg );

//sql 要执行的语句的空间首地址(一般用sprintf拼成字符串放入一个字符型数组里);callback(回调函数)只有在select语句时用,用于选择后对数据的处理,打印等等;

void*是callback的参数;

errmsg错误信息的空间首地址(出错处理时一定要释放掉申请的空间);

if(ret != SQLITE_OK)
    {
        fprintf(stderr,"fail to creat :%s\n",perrmsg);

        sqlite3_free(perrmsg);  //释放掉错误信息申请的空间
        sqlite3_close(pdb);    //关闭数据库
        return -1;
    }

3.sqlite3_close(sqlite3*);

这里需要注意一个点,为什么之前用perror打印出错信息,因为perror是调用系统函数,打印错误信息并将错误码置位,而sqlite3_exec中调用的是sqlite3中的库函数,需要自己从错误流中打印

还有一点,在调用回调函数时,返回值为0,非零值会使sqlite3_exec函数错误使用;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2068607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虚谷数据库连接断开-常见问题的排查及解决方法

在日常的数据库管理工作中。虚谷数据库连接断开是一个常见的问题,这不仅会影响数据库的性能,还可能导致应用程序无法正常运行,本文将探讨Xugu数据库连接断开的原因,并提供相应的解决方法。 E50022 与服务器间的连接已经断开,可能…

如何用ACME.SH实现SSL证书自动化管理?

在上篇《免费SSL证书有效期缩短至90天,该如何应对?》中,想必大家都已经get到了——建站必备四件套之SSL证书的有效期不断缩短已成不可逆的趋势。 这一趋势下,如何有效管理SSL证书成了一道难题。有机智的小伙伴反馈,使用…

golang(go语言)打包成带图标的 exe 可执行文件

目录 1、准备 ico 图标 2、生成 syso 文件 3、打包 4、效果 1、准备 ico 图标 2、生成 syso 文件 创建 main.rc 文件,rc文件的名称main 与项目根目录下 main.go的 main 同名 IDI_ICON1 ICON "favicon.ico" cmd 窗口运行命令 windres -o main.syso main…

从零开始编程:Go语言真的适合新手吗?

Go语言自诞生以来,一直以其简洁、高效和面向工程的特性受到开发者的青睐,尤其是在后端开发和并发编程方面,Go表现出了独特的优势。然而,作为一门以简单著称的语言,它是否适合作为编程初学者的第一门语言呢?…

电脑换硬盘怎么全盘克隆?轻松实现数据迁移

随着科技的不断发展,电脑硬盘的存储容量和读写速度也在不断提升。为了获得更好的电脑使用体验,许多用户会选择更换更大容量、更高效的硬盘。然而,在更换硬盘的过程中,一个关键的问题摆在了我们面前:如何将旧硬盘中的所…

一文掌握 Go 内存对齐

往期精选文章推荐: 深入理解 go map go 常用关键字 深入理解 Go 数组、切片、字符串 深入理解channel 深入理解 go context 深入 go interface 底层原理 深入理解 go reflect 深入理解 go unsafe 前言 在前面的文章 《深入理解 go reflect》和 《深入理解…

还在拼接字符串生成XML?(Java)

FreeMarker是一个功能强大的Java模板引擎&#xff0c;广泛应用于生成动态内容&#xff0c;如HTML、XML和其他文本格式。本文将介绍FreeMarker的基本使用方法&#xff0c;并提供一个更丰富的XML模板示例&#xff0c;以及模板标签和标识的含义。 1. 引入依赖 <dependency>…

Redis持久化RDB/AOF

一、RDB RDB&#xff08;Redis DataBase&#xff09; &#xff1a;RDB 持久性以指定的时间间隔执行数据集的时间点快照&#xff0c;就是把某一刻的数据和状态以文件的形式写到磁盘上。这个快照文件称为RDB文件&#xff08;dump.rdb&#xff09;。 自动触发 Redis7版本&#xff…

Jira使用指南(高级搜索JQL/统计/面板设计)

1.Jira使用指南 Jira使用指南.pdf 上面的pdf比较详细的介绍了Jira的使用&#xff0c;目录如下&#xff1a; 或者从Jira的中文官网获得更多的使用指南 JIRA入门教程 1.1JIRA如何根据过滤出我关注的单子 https://www.cnblogs.com/wzxbro/p/17203914.html 登录JIRA平台&#…

利用子域的System权限通往父域

前言 最近翻阅笔记发现一篇文章提到通过子域的System权限可以突破获取到父域权限&#xff0c;本文将对此技术进行尝试复现研究。 利用分析 环境信息&#xff1a; 子域&#xff1a;187、sub.cs.org 父域&#xff1a;197、cs.org首先通过在子域的域控机器上打开mmc.exe->连…

Git 版本控制操作

1. 版本回退 Git 能够管理⽂件的历史版本&#xff0c;这是版本控制器重要的能⼒。如果有⼀天你发现之前前的⼯作做的出现了很⼤的问题&#xff0c;需要在某个特定的历史版本重新开始&#xff0c;这个时候&#xff0c;就需要版本回退的功能了。 执⾏ git reset 命令⽤于回退版…

Radiance Field Learners As UAV First-Person Viewers 翻译

作为无人机第一人称视角的辐射场学习者 引言。第一人称视角&#xff08;FPV&#xff09;在无人机飞行轨迹的革新方面具有巨大的潜力&#xff0c;为复杂建筑结构的导航提供了一条令人振奋的途径。然而&#xff0c;传统的神经辐射场&#xff08;NeRF&#xff09;方法面临着诸如每…

Python 爬虫入门(十二):正则表达式「详细介绍」

Python 爬虫入门&#xff08;十二&#xff09;&#xff1a;正则表达式 前言一、正则表达式的用途二、正则表达式的基本组成元素2.1 特殊字符2.2 量词2.3 位置锚点2.4 断言2.5 字符集2.6 字符类2.6.1 基本字符类2.6.2 常见字符类简写2.6.3 POSIX字符类2.6.4 组合使用 三、 正则表…

用Python移除PowerPoint演示文稿中的所有超链接

在某些PPT使用场景中&#xff0c;比如需要打印幻灯片或者超链接已失效时&#xff0c;演示文稿中的超链接可能会成为一种干扰。这时我们需要移除PowerPoint演示文稿中的超链接&#xff0c;以确保演示的连贯性和专业性。通过使用Python&#xff0c;我们可以高效地批量处理这一任务…

Java | Leetcode Java题解之第365题水壶问题

题目&#xff1a; 题解&#xff1a; class Solution {public boolean canMeasureWater(int x, int y, int z) {if (x y < z) {return false;}if (x 0 || y 0) {return z 0 || x y z;}return z % gcd(x, y) 0;}public int gcd(int x, int y) {int remainder x % y;w…

提升录制效率,这些录屏软件快捷键你不可不知

我们工作、学习及娱乐中不可或缺的工具有很多&#xff0c;别的不知道肯定有录屏工具的一席之地吧。如果平常频繁的使用这个工具想要它更高效那不妨试试使用录屏快捷键&#xff0c;这次我们来讨论下大家都在用的那些录屏工具吧。 1.福昕录屏大师 链接&#xff1a;www.foxitsof…

案例分享—国外简洁UI设计界面赏析

简洁的页面遵循“少即是多”的设计哲学&#xff0c;强调通过精简元素、色彩和布局来突出核心功能&#xff0c;使设计作品更加直观易用&#xff0c;提升用户体验&#xff1b; 深受现代主义与极简主义思潮影响&#xff0c;这些流派鼓励去除冗余&#xff0c;追求形式与功能的完美结…

Stable Diffusion 与 DALL·E3 的深度解析

一、Stable Diffusion 的全方位解读 Stable Diffusion 是一款令人瞩目的 AI 绘画工具&#xff0c;其显著特点之一便是开源免费。这意味着用户无需支付费用即可自由使用和修改&#xff0c;为广大创作者提供了极大的便利。然而&#xff0c;要想充分发挥其功能&#xff0c;对电脑…

鸿蒙Harmony编程开发:HTTPS服务端证书四种校验方式

如果你还是使用HttpRequest的话&#xff0c;答案是否定的。但是&#xff0c;鸿蒙开发者很贴心的推出了远场通信服务&#xff0c;可以使用rcp模块的方法发起请求&#xff0c;并且在请求时指定服务端证书的验证方式&#xff0c;关键点就在SecurityConfiguration接口上&#xff0c…

K8S故障排查可视化指南 —— 筑梦之路

在线查看 中文版&#xff1a;http://114.132.181.71:8080/book/71 英文版&#xff1a;http://114.132.181.71:8080/book/70 A visual guide on troubleshooting Kubernetes deployments