Visual Studio 2017 连接MySQL数据库

MySQL是一个关系型数据库管理系统,关系数据库将数据保存在不同的表中。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。

一、Windows下安装MySQL

1.下载安装

2.配置数据库

WIN + R调出运行窗口,输入cmd。将目录切换到MySQL解压目录下的bin目录。如下图所示。

在这里插入图片描述

  • 初始化数据库
    输入命令mysqld --initialize --console,并记录随机生成的密码
  • 安装 mysql 的Windows服务
    输入命令 mysqld -install
  • 启动 mysql 服务
    输入命令 net start mysql
  • 登陆数据库
    输入命令 mysql -u root -p 登陆数据库,密码为前面记录的临时密码
  • 如果需要修改密码,可以参考博客

二、配置Visual studio

1. 创建项目编写代码

  • 创建空项目
  • 添加源文件,这里给出一个源文件的示例
//C++连接MySQL
#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <iomanip>
#include <mysql.h> 
using namespace std;

#pragma comment(lib,"libmysql.lib")
#pragma comment(lib,"wsock32.lib")

int main()
{
	MYSQL conn;
	MYSQL_RES* result;  //存储查询等结果
	MYSQL_ROW sql_row;	//查询返回行数
	const char* username = "xxx";			//用户名  (or const char username[])
	const char* passwd = "xxx";        		//密码
	const char* host = "localhost";			//地址 or"127.0.0.1"
	const char* database = "test";        	//数据库database   
	unsigned int port = 3306;           	//端口号server port 

	int res;
	if (!mysql_init(&conn))
	{//初始化一个MYSQL 连接的实例对象,失败
		cout << "[mysql_init() error] " << mysql_error(&conn) << endl;
		exit(EXIT_FAILURE); //EXIT_FAILURE是stdlib.h中定义的: #define EXIT_FAILURE 1;表示没有成功地执行一个程序
	}

	if (!mysql_real_connect(&conn, host, username, passwd, database, port, NULL, 0))
	{
		cout << "[mysql_real_connect() error] " << mysql_error(&conn) << endl;
		exit(EXIT_FAILURE);
	}
	mysql_query(&conn, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文
	//const char* sql_query = "select * from test";//database下有相应的表才能成功
	const char* sql_query = "select * from student";//database下有相应的表才能成功
	if (mysql_query(&conn, sql_query))
	{
		cout << "[mysql_query() (sql:" << sql_query << ")error]" << mysql_error(&conn) << endl;
		exit(EXIT_FAILURE);
	}

	result = mysql_store_result(&conn);//保存查询到的数据到result
	if (result)
	{
		int rows = mysql_num_rows(result);
		int fileds = mysql_num_fields(result);//
		cout << "The total rows is (" << sql_query << "): " << rows << endl;
		cout << "The total fileds is : " << fileds << endl;

		MYSQL_FIELD* fd;
		fd = mysql_fetch_field(result);//获得字段名
		for (int i = 0; i < fileds; i++)
		{//获取列名
			cout << std::left << std::setw(14); cout << fd[i].name;//对齐输出,setw函数是对齐用到的
		}
		cout << endl; //列名输出结束


		while ((sql_row = mysql_fetch_row(result)))
		{//获取具体的数据(每次获取一行)
			for (int j = 0; j < fileds; j++)
			{
				if (sql_row[j] == NULL) {//防止内容为空,程序崩溃
					cout << "null";
				}
				else {
					cout << std::left << std::setw(14); cout << sql_row[j];
				}
			}
			cout << endl;
		}//表数据输出结束

	}
	mysql_close(&conn);//断开连接,释放一个MYSQL 连接实例
	return 0;
}

直接运行,会报错:fatal error C1083: 无法打开包括文件: “mysql.h”: No such file or directory。需要对项目环境进行配置。
在这里插入图片描述

2.项目环境配置(Debug平台为 x64)

(1) 复制 lib 和 dll 文件
将MySQL Server安装目录下 lib 内的 libmysql.lib 和 libmysql.dll,复制到C:\Windows\System32下。
(2)点击 项目→xxx属性
在这里插入图片描述
(3)C/C++→常规→附加包含目录:填写MySQL Server安装目录下include路径
在这里插入图片描述
(4)链接器→常规→附加库目录:填写MySQL Server安装目录下lib路径
在这里插入图片描述

(5)C/C++→预处理器→预处理器定义: _CRT_SECURE_NO_WARNINGS;
在这里插入图片描述

3. 调试

注意: 调试器要与项目属性配置一致,即Debug-x64

然而,现在直接运行还会报错:[mysql_real_connect() error] Access denied for user 'xxx'@'localhost' (using password: YES)

在这里插入图片描述
这是因为在源代码中,我们未将 username 和 passwd 改为自己MySQL数据库对应的用户名和密码。修改之后继续运行,原来的错误消失了。

在这里插入图片描述

出现了新的错误,[mysql_query() (sql:select * from test)error]Table 'test.test' doesn't exist
这是因为我们还没有新建表 test.test 。

三、 新建表

在 test 数据库中新建 test 数据表,SQL 语句和运行结果如下:

mysql> USE test;
Database changed
mysql> CREATE TABLE test (
    -> id INT(4),
    -> name VARCHAR(20),
    -> sex CHAR(1));
Query OK, 0 rows affected, 1 warning (3.82 sec)

使用 DESC 查看 student 表结构,SQL 语句和运行结果如下:

mysql> DESC test;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| sex   | char(1)     | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.38 sec)

在MySQL中输入 show databases;查看数据库,SQL 语句和运行结果如下:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.14 sec)

可以看出存在 test 数据库,数据库配置无误。
在MySQL中输入 show tables;查看表,SQL 语句和运行结果如下:

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| student        |
| test           |
+----------------+
2 rows in set (0.12 sec)

由此可以看出已经建立了test表。再次运行程序,输出正确:
在这里插入图片描述

总结

本文首先介绍了MySQL数据库的下载安装,之后对 Visual studio 2017 的项目环境进行配置,最后给出了一个连接MySQL数据库的简单 C++ demo 代码。

参考文献

  1. https://blog.csdn.net/ychgyyn/article/details/84404217
  2. https://blog.csdn.net/weixin_36466834/article/details/111604663?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242
  3. https://www.php.cn/mysql-tutorials-460359.html
  4. https://blog.csdn.net/Along_168163/article/details/99057831
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页