mysql_init和mysql_real_connect的形象化认识

解析总结

在这里插入图片描述

1. mysql_init 的作用

mysql_init 用于初始化一个 MYSQL 结构体,为后续数据库连接和操作做准备。该结构体存储连接配置及状态信息,是 MySQL C API 的核心句柄。
示例:

MYSQL *conn = mysql_init(NULL); // 初始化连接句柄

2. mysql_real_connect 的参数

函数原型:

MYSQL *mysql_real_connect(
    MYSQL *mysql,           // 由 mysql_init 初始化的连接句柄
    const char *host,       // 服务器地址(如 "localhost" 或 IP)
    const char *user,       // 用户名(如 "root")
    const char *passwd,     // 密码
    const char *db,         // 默认数据库名(可选)
    unsigned int port,      // 端口号(默认 3306,若为 0 则使用默认值)
    const char *unix_socket,// Unix Socket 路径(通常为 NULL)
    unsigned long client_flag // 客户端标志(如 CLIENT_MULTI_STATEMENTS)
);

参数对照表

图片中的参数实际参数名说明
serverhost服务器地址
portport端口号(若为 0,使用默认值 3306)
unix_socketunix_socketUnix Socket 路径(通常填 NULL)
useruser用户名
passwordpasswd密码
databasedb默认连接的数据库(可选)
client_flagclient_flag客户端选项(如是否允许多语句查询)

3. 连接示例
MYSQL *conn = mysql_init(NULL);
if (!conn) {
    fprintf(stderr, "初始化失败\n");
    return;
}

// 连接数据库
if (!mysql_real_connect(
    conn,                   // 句柄
    "localhost",            // 服务器地址
    "root",                 // 用户名
    "password123",          // 密码
    "mydb",                 // 默认数据库
    0,                      // 端口(0 表示默认 3306)
    NULL,                   // Unix Socket(NULL 表示默认)
    CLIENT_MULTI_STATEMENTS // 客户端标志
)) {
    fprintf(stderr, "连接失败: %s\n", mysql_error(conn));
    mysql_close(conn);
    return;
}

4. 数据库与表的操作

连接成功后,可通过其他 API 函数操作数据库和表:

  • 切换数据库mysql_select_db(conn, "database2");
  • 执行查询mysql_query(conn, "SELECT * FROM table1");
  • 处理结果集:使用 mysql_store_resultmysql_use_result

5. 注意事项
  • 参数顺序mysql_real_connect 的参数顺序固定,需严格遵循。
  • 端口与 Socketportunix_socket 一般不同时使用(若使用 Socket,端口填 0)。
  • 资源释放:连接结束后需调用 mysql_close(conn) 释放资源。

通过以上步骤,即可完成 MySQL 数据库的连接与基础操作。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言------数组从入门到精通

1.一维数组 目标:通过思维导图了解学习一维数组的核心知识点: 1.1定义 使用 类型名 数组名[数组长度]; 定义数组。 // 示例: int arr[5]; 1.2一维数组初始化 数组的初始化可以分为静态初始化和动态初始化两种方式。 它们的主要区别在于初始化的时机和内存分配的方…

留学毕业论文如何利用不同问题设计问卷

在留学毕业论文的写作中,我们经常会遇到各种问题,例如选择合适的问题,选择合适的研究方法,以及设计合理的研究过程。然而在完成留学毕业论文的过程中,我们往往会在研究设计这里卡住。即使我们选准了研究问题和研究方法…

范冰冰担任第75届柏林电影节主竞赛单元评委 共鉴电影佳作

近日,备受瞩目的柏林电影节迎来了新一届盛事,而华人演员范冰冰将以主竞赛单元评委身份亮相,引发了广泛关注。此前她已担任过戛纳国际电影节、东京国际电影节、圣塞巴斯蒂安国际电影节等众多电影节主竞赛单元评委。作为国际影坛的知名人物&…

对顾客行为的数据分析:融入2+1链动模式、AI智能名片与S2B2C商城小程序的新视角

摘要:随着互联网技术的飞速发展,企业与顾客之间的交互方式变得日益多样化,移动设备、社交媒体、门店、电子商务网站等交互点应运而生。这些交互点不仅为顾客提供了便捷的服务体验,同时也为企业积累了大量的顾客行为数据。本文旨在…

如何用 Groq API 免费使用 DeepSeek-R1 70B,并通过 Deno 实现国内访问

这几天都被Deepseek刷屏了,而且Deepseek由于异常访问量,这几天都不能愉快的和它玩耍了, 我发现Groq新增了一个Deepseek的70b参数的模型, DeepSeek-R1 70B 作为一款强大的开源模型,提供了卓越的推理能力,而 …

docker配置mysql并使用mysql connector cpp编程

mysql 配置mysql使用docker 这里使用docker安装了,比较简洁,不想使用了直接就可以把容器删掉,首先获取下镜像,如下命令 docker pull container-registry.oracle.com/mysql/community-server这里直接默认使用最新版本的mysql了 …

STM32 TIM输入捕获 测量频率

输入捕获简介: IC(Input Capture)输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数 每个高级定时器…

【已解决】windows7虚拟机安装VMtools频繁报错

为了在虚拟机VMware中安装win7,题主先在网上下载了windows7 professional版本的镜像,在vmware中安装vmtools时报错,信息如下 (安装程序无法继续,本程序需要您将此虚拟机上安装的操作系统更新到SP1) 然后就…

7.抽象工厂(Abstract Factory)

抽象工厂与工厂方法极其类似,都是绕开new的,但是有些许不同。 动机 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。 假设案例 假设…

电路研究9.2.3——合宙Air780EP中FTP——FTPGET 命令使用方法研究

怎么说呢,之前也是看的,但是也很迷茫,感觉上虽然是对的,但是无法联系到应用里面,今天研究一下FTP 命令使用方法吧。 15.29 使用方法举例 这里发现下面那些看的不懂呢,于是就返回FTP的应用了。 9.5.4 FTP 应…

高精度加法乘法

高精度加法&乘法都是把数字转化成数组进行运算,存储 高精度加法 建议多在纸上画画,梳理思路 代码实现 输入字符串 //初始化数组存储 int a[250]{0}; int b[250]{0}; int c[251]{0}; //定义字符串,输入字符串 string s1,s2; getline(c…

【C++】STL介绍 + string类使用介绍 + 模拟实现string类

目录 前言 一、STL简介 二、string类 1.为什么学习string类 2.标准库中的string类 3.auto和范围for 4.迭代器 5.string类的常用接口说明 三、模拟实现 string类 前言 本文带大家入坑STL,学习第一个容器string。 一、STL简介 在学习C数据结构和算法前,我…

数据结构的队列

一.队列 1.队列(Queue)的概念就是先进先出。 2.队列的用法,红色框和绿色框为两组,offer为插入元素,poll为删除元素,peek为查看元素红色的也是一样的。 3.LinkedList实现了Deque的接口,Deque又…

【开源免费】基于SpringBoot+Vue.JS体育馆管理系统(JAVA毕业设计)

本文项目编号 T 165 ,文末自助获取源码 \color{red}{T165,文末自助获取源码} T165,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

LabVIEW温度修正部件测试系统

LabVIEW温度修正部件测试系统 这个基于LabVIEW的温度修正部件测试系统旨在解决飞行器温度测量及修正电路的测试需求。该系统的意义在于提供一个可靠的测试平台,用于评估温度修正部件在实际飞行器环境中的性能表现,从而确保飞行器的安全性和可靠性。 系统…

vim的特殊模式-可视化模式

可视化模式:按 v进入可视化模式 选中 y复制 d剪切/删除 可视化块模式: ctrlv 选中 y复制 d剪切/删除 示例: (vim可视化模式的进阶使用:vim可视化模式的进阶操作-CSDN博客)

mysql重学(一)mysql语句执行流程

思考 一条查询语句如何执行?mysql语句中若列不存在,则在哪个阶段报错一条更新语句如何执行?redolog和binlog的区别?为什么要引入WAL什么是Changbuf?如何工作写缓冲一定好吗?什么情况会引发刷脏页删除语句会…

【Docker】Docker入门了解

文章目录 Docker 的核心概念Docker 常用命令示例:构建一个简单的 C 应用容器1. 创建 C 应用2. 创建 Dockerfile3. 构建镜像4. 运行容器 Docker 优势学习 Docker 的下一步 **一、Docker 是什么?****为什么 C 开发者需要 Docker?** **二、核心概…

使用langchain ollama gradio搭建一个本地基于deepseek r1的RAG问答系统

目录 简介 环境配置 具体实现 安装依赖 定义模型和prompt 加载检索文档 切割 向量存储 创建检索器 实例化 前端搭建 实现效果 小tips 简介 首先介绍一下使用的几个工具,模型和rag的步骤,注:这里只是简单描述一下,不展…

Python中的函数(下)

函数返回值 返回单个值 函数可以通过 return 语句返回一个值。一旦执行到 return 语句,函数就会停止执行,并将指定的值返回给调用者。例如: 返回多个值 实际上,Python函数只能返回一个值,但可以通过返回一个元组来模…