使用从c++连接数据库需要在本机安装数据库,或者拿到数据库所在主机的IP地址。先说明我使用的是mysql8.0 64位的数据库,使用的vs是vs2019。
1.配置环境
首先打开vs2019,创建一个空项目,让后右击下图所示位置,然后找到最下方的属性,点击进去
来到下图页面,点击VC++目录,然后在电脑文件C盘中找到Program Files,找到MySQL,找到MySQL Server 8.0,进入include文件夹,把文件地址 C:\Program Files\MySQL\MySQL Server 8.0\include 复制到以下图中2的位置,再返回上一级进入文件夹lib中,把文件地址 C:\Program Files\MySQL\MySQL Server 8.0\lib 复制到 下图3的位置.
打开链接器,点击输入,点击附加依赖项,在文件夹中进入lib文件夹
找到 libmysql.lib
把 libmysql.lib 该名字复制到下图位置
最后点击应用即可。
再进入到lib文件夹中,复制下图中的 libmysql.lib 到 C盘中的 C:\Windows\System32 该位置
2.c语言链接数据库
代码展示
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<mysql.h>//数据库包含的头文件
#include<time.h>
int main()
{
//固定不变的
MYSQL mysql; //一个数据库结构体
MYSQL_RES* res; //一个结果集结构体
MYSQL_ROW row; //char** 二维数据,存放一条条记录
//初始化数据库
mysql_init(&mysql);
//设置编码方式
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");
//连接数据库
if (mysql_real_connect(&mysql, "ip地址", "数据库的用户名 ", "数据库密码", "使用的数据库名", 3306, NULL, 0) == NULL)
{
printf("错误原因:%s\n", mysql_error(&mysql));
printf("连接失败\n");
exit(-1);
}
char* str1 = "insert into rand values(";//这里使用的表是事先创建好的
char sql_insert[200];
sprintf(sql_insert, "%s%d,'%s','%s',%d%s", str1, 3, "xiaoli", "1234a", 3, ")");//批量插入数据
mysql_query(&mysql, sql_insert);
//查询数据
mysql_query(&mysql, "select * from rand");
//获取结果集
res = mysql_store_result(&mysql);
//给ROW赋值,判断ROW是否为空,不为空就打印数据
while (row = mysql_fetch_row(res))
{
printf("%s \n", row[0]);
}
//释放结果集
mysql_free_result(res);
//关闭数据库
mysql_close(&mysql);
//停留等待
system("pause");
return 0;
}
3.类介绍
1.MYSQL句柄类
1. MYSQL mysql; |
这是一个数据库句柄类,所有的数据库操作都需要用到
2.MYSQL_RES
2.MYSQL_RES* res; |
这是一个查询结果集,用于存放查询数据库后说有的值
3.MYSQL_ROW
2.MYSQL_ROW row |
这个本质上来说不是一个类,它本质上相当于是一个字符串数组的指针,也就是一个二级指针char**。该语句的作用是把MYSQL_RES查询结果集中的内用,一行一行读取出来。表中的一列就是相当于二级指针的一个元素,表有几列就有几个指针。
这是我第一次写博客,有错误的,希望大家可以纠正。