C语言连接MySQL数据库教程及实例代码

更新时间:2024-05-17 12:48:44   人气:4641
在计算机编程领域,C语言因其高效、灵活和底层控制力强等特点被广泛应用。而在处理大量数据时,MySQL作为一款开源的关系型数据库管理系统同样占据着举足轻重的地位。将两者结合使用可以构建功能强大的应用程序,并实现对后台数据的有效管理与操作。

以下是如何通过C语言来连接并进行MySQL数据库交互的详细教程及其示例代码:

**1. 准备工作**

首先确保你的开发环境中已经安装了 MySQL Server 和用于 C 语言访问 MySQL 的库——mysqlclient(或者MariaDB Connector/C)。你可以从官方网站下载或利用包管理器如apt-get (Ubuntu) 或 yum/dnf(RHEL/Fedora) 进行安装。

bash

# Ubuntu/Debian 系统下安装 mysql-client 库:
sudo apt install libmysqlclient-dev

# CentOS/RHEL系统下安装 MariaDB-connector-c:
yum install mariadb-devel


**2. 引入库以及包含头文件:**
要在C程序中使用MySQL API函数,需要引入对应的头文件:mysql.h。

c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 导入MySQL客户端API接口
#include "mysql/mysql.h"


**3. 建立数据库连接:**
创建一个到MySQL服务器的新连接需要用到`mysql_init()`初始化MYSQL结构体对象后调用 `mysql_real_connect()` 方法建立实际物理链接。

c

MYSQL *conn;

if ((conn = mysql_init(NULL)) == NULL) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}

/* 创建连接 */
if (!mysql_real_connect(
conn,
"localhost",
"username",
"password",
"database_name",
port_num /* 默认为0表示默认端口 */,
NULL, // 不适用Unix套接字方式
CLIENT_MULTI_STATEMENTS // 设置额外选项
)) {
printf("Error connecting to database:%s \n", mysql_error(conn));
exit(1);
}
printf("Database connection succeeded.\n");


**4. 执行SQL查询命令:**

执行一条 SQL 查询语句通常会经历准备SQL字符串 -> 调用 `mysql_query()` 来发送至服务端执行 -> 使用 `mysql_store_result()` 获取结果集的过程。

c

const char* query = "SELECT id,name FROM users";

if(mysql_query(conn,query)){
die_with_message(&conn,"Failed executing the Query.");
}

MYSQL_RES *result_set;
result_set=mysql_use_result(conn);

if(result_set==NULL){
die_with_message(&conn,"Unable to fetch data from table.");
}

MYSQL_ROW row;
while((row=mysql_fetch_row(result_set))){
printf("%d %s ",atoi(row[0]),row[1]);
}

mysql_free_result(result_set);


其中die_with_message()是一个自定义错误处理函数,在这里负责打印出具体的错误消息然后退出程序运行。

**5. 关闭数据库连接:**
完成所有数据库操作之后务必关闭已打开的连接以释放资源:

c

mysql_close(conn);


以上便是如何运用C语言去连结并且实操MySQL数据库的基本流程及核心代码片段。需要注意的是,为了保证安全性和健壮性,请始终检查返回值并在必要时候妥善处理可能出现的各种异常情况。同时强烈建议采用预编译参数化查询防止SQL注入攻击等安全性问题。