【MySQL】C语言连接数据库

news2024/11/28 22:32:23

        在使用数据库的时候,我们是操作客户端方的,向服务器请求数据。MySQL的端口号-3306

连接mysql需要头文件:#include<mysql/mysql.h> 

基础连接步骤:

1.创建连接句柄

MYSQL mysql_con;//连接句柄

2.初始化连接句柄mysql_init()

        把连接句柄的地址传进去。

MYSQL*mysql = mysql_init(&mysql_con);

3.连接服务器mysql_real_connect()

mysql=mysql_real_connect(&mysql_con,"127.0.0.1","用户","密码","数据库名",3306,NULL,0);

        连接后就可以使用,建立sql语句 ,传入数据库,获得结果集等

4.关闭连接mysql_close

 mysql_close(mysql);

 因为用了mysql库,所以编译的时候需要加上-lmysqlclient


执行sql语句

sql语句用char类型指针指向,

mysql_query(连接句柄,sql语句);

    //sql语句
    char*sql = "select*from student";
    //执行sql语句-成功返回0
    if(mysql_query(mysql,sql)!=0)
    {
        printf("query err\n");
        exit(1);
    }

select接收返回的结果

1.提取结果:

        一次性提取所有数据:

MYSQL_RES *mysql_store_result(MYSQL *mysql);

        提取的数据在结果集合中。

2.获取结果集中有多少行:

uint64_t mysql_num_rows(MYSQL_RES*res);

        如果没有返回行,则为0.。

3.取出结果集中的一行记录

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);

        出错,没有数据了--返回NULL,通常循环调用该方法

4.查看记录行的列数

unsigned int mysql_field_count(MYSQL *mysql);

释放结果集:


示例:

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<mysql/mysql.h>
int main()
{
    MYSQL mysql_con;//连接句柄
//初始化-mysql指向句柄的地址
    MYSQL*mysql = mysql_init(&mysql_con);
    if(mysql==NULL)
    {
        printf("mysql init err\n");
        exit(1);
    }
//连接数据库
    mysql = mysql_real_connect(&mysql_con,"127.0.0.1","root","Lxy_123456","lxytest",3306,NULL,0);
    if(mysql==NULL)
    {
        printf("connect err\n");
        exit(1);
    }
//sql语句
    char*sql = "select*from student";
//执行sql语句-成功返回0
    if(mysql_query(mysql,sql)!=0)
    {
        printf("query err\n");
        exit(1);
    }
//提取查询结果
    MYSQL_RES* r = mysql_store_result(mysql);
    if(r==NULL)
    {
        printf("res failed\n");
        mysql_close(mysql);
        exit(1);
    }
//获取结果集中的行数
    int num = mysql_num_rows(r);
    printf("结果集一共有%d条记录\n",num);
//获取结果集中的列数
    int count = mysql_field_count(mysql);
    printf("一行记录中有%d列\n",count);
    
    for(int i=0;i<num;i++)
    {
//获取结果集中的一条记录
        MYSQL_ROW row = mysql_fetch_row(r);
        for(int j = 0;j<count;j++)
        {
            printf("%s  ",row[j]);//打印一列
        }
        printf("\n");
    }
//释放结果集
    mysql_free_result(r);
    mysql_close(mysql);
}

 

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

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

相关文章

LabVIEWCompactRIO 开发指南18 使用网络流发送消息和命令

LabVIEWCompactRIO 开发指南18 使用网络流发送消息和命令 默认情况下&#xff0c;网络流旨在最大化吞吐量&#xff0c;但可以轻松实现它们以最大化发送命令或消息的低延迟。 为本部分提供LabVIEW示例代码 命令发送器体系结构 命令发送器是CompactRIO控制器必须响应的任何命…

如何构建“Buy Me a Coffee”DeFi dApp

&#x1f978; 本教程来自官网&#xff1a;https://docs.alchemy.com/docs。对原文部分内容进行了修改。教程中所有实例经过本人实践&#xff0c;代码可见&#xff1a;https://github.com/ChuXiaoYi/web3Study 区块链技术令人惊叹&#xff0c;因为它使我们能够使用代码和软件编…

【Linux初阶】进程地址空间 | CUP与可执行程序的交互原理

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【Linux初阶】 ✒️✒️本篇内容&#xff1a;计算机空间初识&#xff08;子进程变量修改实验&#xff09;&#xff0c;感性理解进程虚拟地址空间&#xff0…

Web自动化测试工具大对决:细致比较Selenium、Protractor和Cypress

目录 前言&#xff1a; Selenium Protractor Cypress 结论 Web自动化测试步骤结构图&#xff1a; 前言&#xff1a; 随着Web应用程序的广泛使用&#xff0c;Web自动化测试工具的需求也越来越高。Web自动化测试工具可以模拟用户在Web浏览器中的行为&#xff0c;并且可以快…

NICE-SLAM学习

NICE-SLAM简介&#xff1a; 是浙大和ETH提出的一种神经隐式SLAM方法主要创新点在于解决了基于传统nerf的方案如imap无法应用在较大场景的问题。 关于该工程的前身和当前领域的主要研究现状见&#xff1a;&#xff08;知乎&#xff1a;秦通&#xff09;基于神经辐射场的&#…

接口自动化测试-Pytest核心固件Fixture详解以及应用实战

目录 前言&#xff1a; 一、Fixture概述 二、Fixture分类 在Pytest中&#xff0c;Fixture可以分为4类&#xff1a; 三、Fixture使用 下面结合实例说明如何使用Fixture。 3.1 session级别的Fixture 3.2 module级别的Fixture 3.3 function级别的Fixture 3.4 class级别的F…

2023.5.13前端设计

SpringbootVue架构设计&#xff08;一&#xff09; 项目中的文件来自B站视频&#xff08;程序员青戈&#xff09; https://www.bilibili.com/video/BV1U44y1W77D 前端设计 assets 文件夹通常用于存放静态资源文件&#xff0c;例如图像、CSS、字体等。components 文件夹通常用…

2023.5.14数据库设计

SpringbootVue架构设计&#xff08;二&#xff09; 项目中的文件来自B站视频&#xff08;程序员青戈&#xff09; https://www.bilibili.com/video/BV1U44y1W77D 数据库设计 1、article 在关系型数据库中&#xff0c;text类型和varchar类型都是用来存储字符串的数据类型。它…

【ShaderToy中图形效果转译到UnityShaderlab案例分享_Flame】

ShaderToy内的源码与效果图如下: float noise(vec3 p) //Thx to Las^Mercury {vec3 i = floor(p);vec4 a = dot(i

电动力学专题:电磁波传播时的色散效应

本文中假定波动方程的性质足够好&#xff0c;不要杠&#xff0c;杠你就输了 数学分析中的问题和XX 波动方程&#xff1a;\frac{\partial^2 u}{\partial t^2} - a^2 \frac{\partial^2 u}{\partial x^2} 0......(1) 波的色散 波动方程描写的是以恒定速度a传播的非衰减波。方程&…

【电厂用 交流三相电流继电器HJL-F93/AY 导轨安装 JOSEF约瑟供应 】

名称&#xff1a;交流三相电流继电器&#xff0c;品牌&#xff1a;JOSEF约瑟&#xff0c;型号&#xff1a;HJL-F93/AY&#xff0c;功率消耗&#xff1a;≤5W&#xff0c;触点容量&#xff1a;250V/5A&#xff0c;额定电压&#xff1a;58、100、110、220V 上海约瑟供应 交流三相…

第十四届蓝桥杯青少组选拔赛Python真题 (2022年10月30日),包含答案

目录 一、选择题 二、编程题 第十四届蓝桥杯青少组选拔赛Python真题 (2022年10月30日) 一、选择题 第 1 题 单选题 执行print (5%3) 语句后,输出的结果是 ( ) 答案:C 第2题单选题 以下选项中,哪一个是乘法运算符?() 答案:C 第3题 单选题 已知x-3,求x//2+x”2的…

PCIE结构拓扑(RC、EP、SWITCH)介绍

1、PCIE典型结构拓扑 (1)个人理解&#xff1a;红色方框部分一般是在芯片内部集成&#xff0c;对外可提供多个PCIE接口&#xff1b; (2)芯片提供的PCIE接口&#xff0c;可以接EP设备、PCI桥、Switch设备&#xff1b; 2、RC&#xff08;Root Complex&#xff09; 个人理解&#x…

【一文吃透归并排序】基本归并·原地归并·自然归并 C++

目录 1 引入情境基本归并排序实现 C 2 原地归并排序2-1 死板的解法2-2 原地工作区2-3 链表归并排序 3 自底向上归并排序4 两路自然归并排序4-1 形式化描述4-2 代码实现 1 引入情境 归并思想&#xff1a;假设有两队小孩&#xff0c;都是从矮到高排序&#xff0c;现在通过一扇门后…

微服务#3 Docker常用命令

Docker 一.初识docker Docker如何解决大型项目依赖关系复杂&#xff0c;不同组件依赖的兼容性问题? Docker允许开发中将应用、依赖、函数库、配置一起打包&#xff0c;形成可移植镜像Docker应用运行在容器中&#xff0c;使用沙箱机制&#xff0c;相互隔离 Docker如何解决开…

在树莓派上搭建WordPress博客网站,并内网穿透发布到公网

✨个人主页&#xff1a;bit me&#x1f447; 目 录 &#x1f43e;概述&#x1f490;安装 PHP&#x1f338;安装MySQL数据库&#x1f337;安装 Wordpress&#x1f340;设置您的 WordPress 数据库&#x1f339;设置 MySQL/MariaDB&#x1f33b;创建 WordPress 数据库 &#x1f33…

pga_aggregate_limit和process关系

之前部署19c时&#xff0c;配置pga_aggregate_limit都是直接配置成0了&#xff0c;配置processes的大小也比较随意&#xff0c;上周维护一个客户安装的环境&#xff0c;重启数据库数据库时告警了&#xff0c;才第一次认真对面了 SYSorcl1> startup ; ORA-00093: pga_aggreg…

鼠标拆卸方法、鼠标按键噪声大解决办法(为按钮加润滑脂)

文章目录 今天我买了一款acer鼠标&#xff0c;发现按键声音有点大&#xff0c;想给它的按钮上一点缓冲脂&#xff0c;这个缓冲脂本来我是买来润滑机械键盘轴体用的&#xff0c;刚好也能用上。 这是我的鼠标外壳结构&#xff0c;我拆卸的时候没注意&#xff0c;给我拆坏了&…

SRP中的shader

SRP中的shader 在Unity中使用SRP时&#xff0c;我们需要使用HLSL来编写shader。HLSL语法与GLSL类似&#xff0c;在使用HLSL的地方我们需要用HLSLPROGRAM和ENDHLSL来包裹&#xff1a; Shader "My Pipeline/Unlit" {Properties {}SubShader {Pass{HLSLPROGRAM#pragma …

MySQL访问方法

访问方法&#xff08;访问类型&#xff09; Const 通过主键或者唯一二级索引来定位到唯一一条满足条件的数据的访问方法称为const。特别指出&#xff0c;如果主键中有两个列l1和l2&#xff0c;查询条件中只有l1的话访问方法就不是const&#xff0c;因为通过l1并不能确定唯一一条…