Linux软件编程---数据库

news2025/1/13 7:57:59

 

目录

 

一、数据库

1.1.概念

1.2.类型 

1.关系型数据库

2.非关系型数据库

1.3.SQL语言

1.4.如何在Linux安装sqlite数据库 

1.确保虚拟机可以上网

2.配置apt-get工具集合

3.安装sqlite数据库

1.5.sqlite3

1.创建数据库

2.查看数据表

3.退出数据库

4.SQL语句

二、数据库编程

2.1.安装sqlite3

 2.2.函数接口

1.sqlite3_open() --- 打开数据库

2. sqlite3_errmsg() --- 获得出错原因

3.sqlite3_exec ()--- 操作数据库表

4.sqlite3_close()--- 关闭数据库

2.3.实例

三、总结


一、数据库

1.1.概念

文件存放数据,掉电的情况下数据不会;

数据库存放的位置也是文件;

什么时候使用数据库呢?

当要存储和管理大量数据时,往往使用数据库,效率高;

1.2.类型 

1.关系型数据库

 1)Oracle

 2)DB2

3)MySql

4)sqlserver

5)sqlite

2.非关系型数据库

1)redis

1.3.SQL语言

数据库支持的编程语言,主要对表完成:增、删、改、查相关功能

1.4.如何在Linux安装sqlite数据库 

1.确保虚拟机可以上网

2.配置apt-get工具集合

3.安装sqlite数据库

suo apt-get install sqlite3

1.5.sqlite3

1.创建数据库

sqlite3  数据库名

2.查看数据表

.tables 

3.退出数据库

.quit

4.SQL语句

create table 表名   --------  创建数据库表

insert into 表名 values (.....)------ 插入元素

update 表名 set 列 = “”     ---- 修改元素

select 列,., . from 表名   ----- 查询元素

delete from student where ..  ------- 删除某一行元素

drop table 表名 ----  删除表

注意查询是最复杂的  可以连接where条件查询,也可以联合其他表查询

联合查询

cross join ---  交叉连接

inner join --- 内连接

outer join --- 外连接

二、数据库编程

2.1.安装sqlite3

 sudo apt-get install libsqlite3-dev 
 

 2.2.函数接口

1.sqlite3_open() --- 打开数据库

        int sqlite3_open(
            const char *filename,   /* Database filename (UTF-8) */
            sqlite3 **ppDb          /* OUT: SQLite db handle */
        );

        功能:
            打开一个数据库文件
        参数:
            filename:数据库文件名称 
            ppDb:数据库句柄
        返回值:
            成功返回SQLITE_OK
            失败返回错误码

2. sqlite3_errmsg() --- 获得出错原因

const char *sqlite3_errmsg(sqlite3*);
        获得出错原因

3.sqlite3_exec ()--- 操作数据库表

         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 */
            char **errmsg                              /* Error msg written here */
          );
          功能:
            执行SQL语句
          参数:
            sqlite3*:数据库句柄
            sql:要执行的SQL语句字符串的首地址 
            callback:回调函数(只有在select语句时会使用,其余SQL语句只需传入NULL),对找到的数据要完成的操作
            void *:给回调函数的参数 
            char **:存放错误信息空间首地址
          返回值:
            成功返回SQLITE_OK 
            失败返回错误码 

4.sqlite3_close()--- 关闭数据库

 int sqlite3_close(sqlite3*);
          功能:
            关闭sqlite3数据库  

2.3.实例

创建数据库,并创建student表,插入数据,并查询打印

#include <sqlite3.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
    char name[32];
    char sex[8];
    double score;
} stu_t;

/*打印查寻到的数据*/
int callback(void *arg, int column, char **pcontext, char **ptitle)
{
    int i = 0;
   
    for (i = 0; i < column; i++)
    {
        printf("%s = %s\t", ptitle[i], pcontext[i]);
    }
     printf("\n");

    return 0;
}

int main(void)
{
    sqlite3 *db = NULL;
    char *perrmsg = NULL;
    char tmpbuff[1024] = {0};
    int ret = 0;
    int i = 0;

    stu_t s[3] = {
        {"张三","男",89},
        {"李四","男",99},
        {"王二","男",100},
    };

    /* 打开数据库文件 */
    ret = sqlite3_open("student.db", &db);
    if (ret != SQLITE_OK)
    {
        fprintf(stderr, "fail to open:%s\n", sqlite3_errmsg(db));  
        return -1;
    }

    
    /* 创建表 */
    sprintf(tmpbuff, "%s", "create table if not exists student  (id integer primary key asc,name text,sex text,socre integer);");
    ret = sqlite3_exec(db, tmpbuff, NULL, NULL, &perrmsg);
    if (ret != SQLITE_OK)
    {
        fprintf(stderr, "fail to create table:%s", perrmsg);  
        return -1;
    }

    /* 插入数据 */
    for (i = 0; i < 3; i++)
    {
        sprintf(tmpbuff, "insert into student values(NULL,\'%s\',\'%s\',%lf);",s[i].name,s[i].sex,s[i].score);
        ret = sqlite3_exec(db, tmpbuff, NULL, NULL, &perrmsg);
        if (ret != SQLITE_OK)
        {
            fprintf(stderr, "fail to create table:%s", perrmsg);  
            sqlite3_free(perrmsg);
            sqlite3_close(db);
            return -1;
        }
    }
    /* 查寻数据 */
    sprintf(tmpbuff, "select * from student;");
    ret = sqlite3_exec(db, tmpbuff, callback, NULL, &perrmsg);
    if (ret != SQLITE_OK)
    {
        fprintf(stderr, "fail to create table:%s", perrmsg); 
        sqlite3_free(perrmsg);
        sqlite3_close(db); 
        return -1;
    }    
    
    sqlite3_close(db);
}

三、总结

        数据库中最难的操作还是,查询操作,查询按照很多不同条件查询,情况比较多,必须扎实掌握。 

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

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

相关文章

XShell给Ubuntu虚拟机安装MySQL

准备工作&#xff1a;已经装好了虚拟机&#xff0c;并且已经下载了Linux系统&#xff0c;如 Linux Mint &#xff0c; Ubuntu 等&#xff0c;今天以目前较为流行的Ubuntu为示例 1.为什么选择Linux&#xff1f; 在现代软件开发中&#xff0c;Linux系统已成为开发和部署的首选平…

面试中被问到各个测试阶段的具体工作,如何详细描述

软件测试工程师面试的时候有一个问题也是一定会被问到的&#xff0c;那就是&#xff1a;你们的软件项目都会经过哪些测试阶段呢&#xff1f;每个阶段测试人员都做什么&#xff1f;接下来&#xff0c;凯哥就为各位小伙伴详细的说一说&#xff1a; 首先&#xff0c;一般的软件测…

Java 入门指南:Set 接口

Collection 接口 Collection 接口提供了一系列用于操作和管理集合的方法&#xff0c;包括添加、删除、查询、遍历等。它是所有集合类的根接口&#xff0c;包括 List、Set、Queue 等。 Collection 接口常见方法 add(E element)&#xff1a;向集合中添加元素。 addAll(Collecti…

【C++ Primer Plus习题】2.4

问题: 解答: #include <iostream> using namespace std;const int yearToMonth 12;int main() {short age 0;cout << "请输入您的芳龄:" << endl;cin >> age;int months age * yearToMonth;cout << age << "岁已经在世…

Wemos D1 Mini pro/ nodeMcu / ESP8266 驱动 240*320 ILI9431 SPI液晶屏

Wemos D1 Mini / nodeMcu / ESP8266 驱动 240*320 ILI9431 SPI液晶屏 效果展示器件硬件连接引脚连接原理图引脚对照表 安装TFT_eSPI库TFT_eSPI库中User_Setup.h文件的参数修改User_Setup.h文件的位置User_Setup.h文件中需要修改的参数User_Setup.h完成源码 例程 缘起&#xff1…

狗都能看懂的可变形卷积详解

Deformable Convolution Networks 论文地址&#xff1a;https://arxiv.org/pdf/1703.06211 官方源码&#xff1a;https://github.com/msracver/Deformable-ConvNets/tree/master Deformable Convolution 文章提出了可变形卷积和可变形ROI采样。原理是一样的&#xff0c;这里先…

软件测试-测试分类

测试分类 按照测试目标测试 界面测试 页面内展示的所有内容/元素都需要测试 参考UI图找不同 功能测试 ​ 如何设计功能测试用例&#xff1f; 参考产品规格说明书进行用例的编写&#xff0c;具体的测试用例需要使用黑盒设计测 试用例的方法&#xff0c;如等价类、边界值、…

【HTML】为网页添加表单(控件)

1、表单 表单控件&#xff1a;包含了具体的表单功能项&#xff0c;如单行文本输入框、密码输入框、复选框、提交按钮、重置按钮等。 提示信息&#xff1a;一个表单中通常需要包含一些说明性的文字&#xff0c;提示用户进行填写和操作。 表单域&#xff1a;相当于一个容器&…

精准掌控,速看顶级软件资产管理方案,让您企业软件资产一目了然!

企业软件资产的管理是保障业务连续性、优化成本结构和提升信息安全的重要基石。然而&#xff0c;随着企业规模的扩大和软件的多样化&#xff0c;软件资产管理面临着前所未有的挑战。 如何精准掌控每一项软件资产&#xff0c;确保其合规使用、高效运维&#xff0c;成为了企业IT…

欧拉函数和快速幂

欧拉函数&#xff1a; 定义&#xff1a; 互质&#xff1a;互质是公约数只有1的两个整数&#xff0c;叫做互质整数。 欧拉函数&#xff1a;欧拉函数&#xff0c;即 表示的是小于等于n并且和n互质的数的个数。 比如说 φ(1) 1。当n是质数的时候&#xff0c;显然有 (n)n-1。 …

【每日刷题】Day105

【每日刷题】Day105 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1658. 将 x 减到 0 的最小操作数 - 力扣&#xff08;LeetCode&#xff09; 2. 904. 水果成篮 - 力…

File的常见成员方法(获取并遍历)

一.File的常见成员方法&#xff08;获取并遍历&#xff09;&#xff1a; 二.代码实现&#xff1a; 1.D盘下的JavaTest文件夹为&#xff1a; 2.执行listFiles方法后&#xff1a; package com.itheima.a01myfile; ​ import java.io.File; ​ public class FileDemo6 {public s…

es的学习

1.认识es 2.ik分词器 对于某些词进行特定分词设置或者忽略设置 3.索引库的操作 就是相当于操作表 4.文档的操作 就是相当于操作数据

[windows][apache]Apache代理安装

下载apache服务软件和VC_redist安装包 https://www.apachelounge.com/download/ https://www.microsoft.com/zh-CN/download/details.aspx?id48145 解压文件&#xff0c;修改httpd.conf文件 37行出修改文件的解压目录 60行修改监听端口 安装服务 进入apache的目录&#xf…

windows系统蓝屏怎么办_Windows系统蓝屏原因查找及解决方法

电脑蓝屏怎么办&#xff1f;windows蓝屏是十分常见的故障&#xff0c;也是十分难以解决的问题&#xff0c;例如软件冲突兼容性问题、系统补丁bug、超频不当、系统文件损坏、硬件驱动兼容性、虚拟内存设置不当、电脑硬件温度过高、内存硬盘等硬件损坏、内存松动等均可能造成电脑…

2024年8月22日嵌入式学习

今日主要学习网络知识 udp recvfrom ssize_t recvfrom(int sockfd, //socket的fd void *buf, //保存数据的一块空间的地址 size_t len, //这块空间的大小 int flags, // 0 默认的接收方式 --- 阻塞方式…

克服编程学习中的挫折感:从心态到策略的全方位指南

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《热点时事》 期待您的关注 目录 引言 一、心态调整&#xff1a;积极乐观&#xff0c;合理期望 二、学习方法&#xff1a;有效策…

js中的字符串的length的知识点。

unicode字符集 unicode字符集是对世界上绝大部分字符进行编码&#xff0c;一个字符对应一个编码&#xff0c;范围&#xff1a;0x0000-0x10FFFF,可以表示一百多万个字符&#xff0c;其中0x0000-0xFFFF的字符为BMP&#xff08;基本多语言平面字符集&#xff09;&#xff0c;剩余…

【大模型从入门到精通34】开源库框架LangChain 利用LangChain构建聊天机器人1

这里写目录标题 利用LangChain构建聊天机器人介绍介绍对话型聊天机器人构建环境环境变量和平台设置 加载文档和创建向量存储高级检索技术对话上下文和记忆纳入聊天历史会话缓冲内存 构建对话检索链环境设置与API密钥配置选择合适的语言模型版本Q&A系统设置 利用LangChain构…

无人机之喊话器的用途

无人机喊话器&#xff0c;俗称无人机扬声器&#xff0c;其用途广泛且多样化&#xff0c;主要体现在以下几个方面&#xff1a; 一、应急救援与指挥 紧急响应与指挥&#xff1a;在自然灾害&#xff08;如山洪、火灾、地震等&#xff09;或突发事件发生时&#xff0c;无人机搭载喊…