前言:
最近到了期末。各种课程设计迎面而来。完了一些项目在本地存储和读写实在是麻烦的很。所以动了歪心思。琢磨着一劳永逸。
1-安装MYSQL
这个可以看我的上一篇博文
https://blog.csdn.net/wsc3506/article/details/112427609
2-Visual Studio2019 的安装
这个暂时简单介绍,有时间会写一篇完整的介绍或者是找一篇完整一点的博客。
https://visualstudio.microsoft.com/downloads/
访问VisualStudio 的官方下载
在这里选择你适合的版本,一般选择社区版本足够使用。
3-配置VS2019工程
3.1新建项目[C++空项目]
打开VisualStudio2019-选择创建新项目
选择C++的空项目
点击创建,第一步完成
3.2- 项目配置前准备
新建的空项目,里面没有任何文件,需要我们去添加
我们新建一个main.cpp,添加基础Cpp代码(如果不添加稍后在属性中找不到C++选项
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
cout << "hello" << endl;
return 0;
}
如下对比
添加前
添加后
然后是调整到x64的debug模式
项目的实现准备我们已经完成了,剩下的就是准备mysql文件的目录。
我们需要mysql的include 和 lib两个目录,可以直接引用mysql的文件,也可以复制到项目路径下。
准备好mysql 的路径
D:\File\Tools\IDE\Mysql\mysql-8.0.16-winx64
这个是我的mysql文件路径
红圈的两个文件夹就是我们稍后在VS2019项目设置中所需要用到的
3.3-正式的项目配置
在项目->属性中 引用include文件夹
链接lib文件夹
添加 libmysql.lib 直接输入即可
在项目文件夹下添加libmysql.lib文件和libmysql.dll文件
(这两个文件的地址位于/mysql/lib目录下
对项目的配置到此结束
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 <cstdio>
#include <WinSock.h> //一定要包含这个,或者winsock2.h
#include "mysql.h"//引入mysql头文件(一种方式是在vc目录里面设置,一种是文件夹拷到工程目录,然后包含)
#include <iostream>
#include <string>
#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;
}//简单的信息输出
数据库截图
运行效果,虽然有点乱,但是勉强可以用
以上,学习笔记。遇到坑的话会在此博客继续记录。
参考
https://blog.csdn.net/zxng_work/article/details/78926413