文章目录
一、准备工作
1.环境配置
- mysql数据库安装(我使用的是mysql5.6)
- C/C++编译器(我的是VS2017)
2.新建空项目
![](https://i-blog.csdnimg.cn/blog_migrate/567ed112cd58eb3cae24ed6c24e4df80.png#pic_center)
3.给新建项目配置mysql依赖文件及库
- 找到mysql安装目录
- 给项目配置包含目录及库目录
- 右击项目属性 -> 找到VC++ 目录(将对应路径配置)
确定即可
- 右击项目属性 -> 找到VC++ 目录(将对应路径配置)
二、开始准备连接
1.新建源文件
2.写入头文件
#include<stdio.h>
#include<stdlib.h>
#include <winsock.h> //网络编程头文件,mysql.h需要用到,在他前面
#include <mysql.h> //数据库头文件
#pragma comment (lib, "libmysql.lib") //链接库
3.增加主函数
int main()
{
MYSQL *conn; //数据库连接句柄
MYSQL_RES *res; //执行数据库语言结果
MYSQL_ROW row; //存放一个数据记录
char* server = "localhost";//本地连接
char* user = "root";//
char* password = "root";//mysql密码
char* database = "jdbctest";//数据库名
char* query = "select * from user";//需要查询的语句
conn = mysql_init(NULL); //句柄初始化
int t;
if (!mysql_real_connect(conn, server, user, password, database, 3306, NULL, 0)) //判断数据库是否连接成功
{
printf("Error connecting to database:%s\n", mysql_error(conn));
}
else {
printf("Connected...\n");
}
system("pause");
return 0;
}
如果提示报错:
打开项目属性 ->C/C++ ->语言 -> 符合模式改为否
打开项目属性 ->C/C++ ->代码生成 -> 安全检查 ->关闭
- 可以编译运行
- 可以连接成功
三、从数据库获取数据
1.下面是mysql可视化工具(数据库里的数据)
2.继续增加代码获取数据
if (mysql_query(conn, query))
{
printf("Error making query:%s\n", mysql_error(conn));
}
else
{
printf("Query made...\n");
res = mysql_use_result(conn); //获取结果
if (res)
{
while ((row = mysql_fetch_row(res)) != NULL)
{
//printf("num=%d\n",mysql_num_fields(res));//列数
for (t = 0; t < mysql_num_fields(res); t++)
printf("%8s ", row[t]);
printf("\n");
}
}
mysql_free_result(res);
}
mysql_close(conn); //断开数据库
- 编译运行:
- 可以看到中文会出现乱码
3.增加设置编码代码(具体位置看总体代码)
//字符编码,解决乱码
if (!mysql_set_character_set(conn, "gbk"))
{
printf("New client character set: %s\n",
mysql_character_set_name(conn));
}
- 编译运行
- 成功
四、总体代码
#include<stdio.h>
#include<stdlib.h>
#include <winsock.h>
#include <mysql.h>
#pragma comment (lib, "libmysql.lib")
int main()
{
MYSQL *conn; //数据库连接句柄
MYSQL_RES *res; //执行数据库语言结果
MYSQL_ROW row; //存放一个数据记录
char* server = "localhost";//本地连接
char* user = "root";//
char* password = "root";//mysql密码
char* database = "jdbctest";//数据库名
char* query = "select * from user";//需要查询的语句
conn = mysql_init(NULL); //句柄初始化
int t;
if (!mysql_real_connect(conn, server, user, password, database, 3306, NULL, 0)) //判断是否连接成功
{
printf("Error connecting to database:%s\n", mysql_error(conn));
}
else {
printf("Connected...\n");
}
//字符编码,解决乱码
if (!mysql_set_character_set(conn, "gbk"))
{
printf("New client character set: %s\n",
mysql_character_set_name(conn));
}
if (mysql_query(conn, query))
{
printf("Error making query:%s\n", mysql_error(conn));
}
else
{
printf("Query made...\n");
res = mysql_use_result(conn); //获取结果
if (res)
{
while ((row = mysql_fetch_row(res)) != NULL)
{
//printf("num=%d\n",mysql_num_fields(res));//列数
for (t = 0; t < mysql_num_fields(res); t++)
printf("%8s ", row[t]);
printf("\n");
}
}
mysql_free_result(res);
}
mysql_close(conn); //断开数据库
system("pause");
return 0;
}
参考:
- https://blog.csdn.net/u011633428/article/details/86022135
- https://blog.csdn.net/qq_18297675/article/details/52239881
- https://blog.csdn.net/qq_21997625/article/details/75059616?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.pc_relevant_is_cache&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.pc_relevant_is_cache