Linux - 连接mysql数据库

运行环境:

Ubuntu20.04 ,虚拟机VMware

Mysql 8.0 API libmysqlclient-dev

MysqlServer version:   8.0.33-0ubuntu0.20.04.2 (Ubuntu)

注意:执行以下步骤需要提前安装好mysql之后再操作,如果没有安装好mysql请自行安装好。

 

1. 准备工作

1.1 在Ubuntu上准备mysql开发环境

更新软件源

sudo apt-get update

安装libmysqlclient-dev,这个lib库是Linux下C/C++连接mysql的客户端

sudo apt-get install libmysqlclient-dev

1. 2 创建测试数据库与表

在mysql中创建一个名为C_DB的数据库,在库中建立一张名为C_TBL的表

CREATE DATABASE C_DB;--创建数据库

USE C_DB;--选择数据库

--创建表
CREATE TABLE C_TBL(
    ID INT PRIMARY KEY AUTO_INCREMENT,#主键且自增
    NAME VARCHAR(32),
    SEX VARCHAR(8)
);

 

2. 与mysql建立连接

2.1 在C文件中引入头文件

在C文件中引入头文件#inlude <mysql.h>通过MYSQL mysql;创建一个mysql结构体对象MYSQL结构体定义在mysql.h

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

int main()
{

	//固定不变的
	MYSQL mysql;    //一个数据库结构体  
	MYSQL_RES* res; //一个结果集结构体
	MYSQL_ROW row; //char** 二维数据,存放一条条记录
    
    return 0;
}

 

2.2 初始化mysql与数据库的通道

mysql_init函数初始化失败会返回NULL
mysql_error是mysql API提供的标准错误

if(mysql_init(&mysql) == NULL)
{
    printf("%s",mysql_error(&mysql));
    return -1;
}

 

2.3 与mysql建立真实连接

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


int main()
{
	//固定不变的
	MYSQL mysql;    //一个数据库结构体  
	MYSQL_RES* res; //一个结果集结构体
	MYSQL_ROW row; //char** 二维数据,存放一条条记录

	//初始化数据库
	mysql_init(&mysql);

	//设置编码方式
	mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");

	//连接数据库                    //ip地址	   //用户名 //密码       //数据库名
	if (mysql_real_connect(&mysql, "localhost", "root", "123456", "C_DB", 3306, NULL, 0))
	{
        printf("数据库连接成功!\n");
	}
	else
	{
        printf("数据库连接失败!\n");
        printf("错误原因:%s\n", mysql_error(&mysql));
        exit(-1);
	}
	return 0;
}

将上述代码保存为test_mysql.c。上述代码中,我们需要包含mysql.h头文件来使用mysql提供的API对MySQL进行操作。

程序写好了,编译过程需要加入链接信息。

注意:使用<mysql.h>头文件在编译时需要加上-lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql

#方式1:
sudo gcc test_mysql.c -o test_mysql.o -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql

#方式2:
sudo gcc -I/usr/include/mysql test_mysql.c -L/usr/lib/mysql -lmysqlclient -o test_mysql.o

好了,程序成功编译,运行一下试试吧

运行结果:

 

posted @ 2023-06-28 15:34  [BORUTO]  阅读(724)  评论(0编辑  收藏  举报