Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作

前言:
最近到了期末。各种课程设计迎面而来。完了一些项目在本地存储和读写实在是麻烦的很。所以动了歪心思。琢磨着一劳永逸。

1-安装MYSQL

这个可以看我的上一篇博文

https://blog.csdn.net/TWENTYY/article/details/90416889

2-Visual Studio2019 的安装

这个暂时简单介绍,有时间会写一篇完整的介绍或者是找一篇完整一点的博客。

https://visualstudio.microsoft.com/downloads/
访问VisualStudio 的官方下载

Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作_第1张图片
在这里选择你适合的版本,一般选择社区版本足够使用。

3-配置VS2019工程

3.1新建项目[C++空项目]

打开VisualStudio2019-选择创建新项目
Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作_第2张图片

选择C++的空项目
Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作_第3张图片Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作_第4张图片

点击创建,第一步完成

3.2- 项目配置前准备

新建的空项目,里面没有任何文件,需要我们去添加
Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作_第5张图片
我们新建一个main.cpp,添加基础Cpp代码(如果不添加稍后在属性中找不到C++选项

#include 
#include 

using namespace std;

int main()
{

	cout << "hello" << endl;

	return 0;
}

如下对比
Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作_第6张图片
添加前
Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作_第7张图片
添加后

然后是调整到x64的debug模式

Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作_第8张图片


项目的实现准备我们已经完成了,剩下的就是准备mysql文件的目录。

我们需要mysql的include 和 lib两个目录,可以直接引用mysql的文件,也可以复制到项目路径下。
准备好mysql 的路径

D:\File\Tools\IDE\Mysql\mysql-8.0.16-winx64
这个是我的mysql文件路径

Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作_第9张图片
红圈的两个文件夹就是我们稍后在VS2019项目设置中所需要用到的

3.3-正式的项目配置

Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作_第10张图片
在项目->属性中 引用include文件夹
Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作_第11张图片
链接lib文件夹

Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作_第12张图片

添加 libmysql.lib 直接输入即可
Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作_第13张图片
在项目文件夹下添加libmysql.lib文件和libmysql.dll文件

Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作_第14张图片
(这两个文件的地址位于/mysql/lib目录下Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作_第15张图片

对项目的配置到此结束

4-写一个小Demo

我们在#include"mysql.h"之前要注意几点
首先是#include 内容的注意。除了必不可少的iostream/stdio.h
在引用mysql.h的时候,我们要先引用winsocket.h或者winsocket2.h

因为调用了libmysql.lib 还有使用了winsocket模块 我们在#include部分下面添加

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

剩下的暂时没想到,以后在补充。附上具体代码

#include 
#include   //一定要包含这个,或者winsock2.h
#include "mysql.h"//引入mysql头文件(一种方式是在vc目录里面设置,一种是文件夹拷到工程目录,然后包含)
#include 
#include 
#pragma comment(lib,"wsock32.lib")
#pragma comment(lib,"libmysql.lib")
using namespace std;

int main() {
	MYSQL mysql;
	mysql_init(&mysql);
	mysql_real_connect(&mysql, "localhost", "root", "123456", "table", 3306, NULL, 0);
}
	try
	{	//MySQL命令
		string sql = "SELECT * from vip;";
		if (mysql_query(&mysql, sql.c_str()))
		{
			string err_string = mysql_error(&mysql);

			if (err_string.empty())
				throw string("MySQL query is error!");
			else
				throw err_string;
		}
		cout << "MySQL : " << sql << endl;

		MYSQL_RES* result = mysql_store_result(&mysql);
		if (!result)
			throw string("MySQL not result!");
		//获取字段数量
		int num_fields = mysql_num_fields(result);
		if (0 == num_fields)
			throw string("MySQL fields number is 0!");
		//获取字段名
		MYSQL_FIELD * fields = mysql_fetch_fields(result);
		if (!fields)
			throw string("MySQL fields fetch is error!");

		for (int i = 0; i < num_fields; i++)
		{
			cout << " " << fields[i].name;
		}
		cout << endl;

		while (MYSQL_ROW row = mysql_fetch_row(result)) //获取整条数据内容
		{
			for (int i = 0; i < num_fields; i++)
			{
				if (NULL == row[i])
				{
					cout << " NULL";
				}
				else
				{
					cout << " " << row[i];
				}
			}
			cout << endl;
		}

		mysql_free_result(result);

		cout << "MySQL is OK." << endl;
	}
	catch (string & error_msg)
	{
		cout << error_msg << endl;
	}
	catch (...)
	{
		cout << "MySQL operation is error!" << endl;
	}
	mysql_close(&mysql);
	return 0;
}//简单的信息输出


数据库截图
Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作_第16张图片
运行效果,虽然有点乱,但是勉强可以用
Mysql学习笔记-001-使用VS2019与Mysql-C-API实现对数据库的操作_第17张图片

以上,学习笔记。遇到坑的话会在此博客继续记录。

参考

https://blog.csdn.net/zxng_work/article/details/78926413

你可能感兴趣的:(Mysql学习笔记)