今天在电脑上安装了MySQL8.0并成功用vs2017连接,期间参考了不少教程,在此整理下参考的教程
一、windows10下MySQL8.0的安装
1、MySQL安装
首先登陆MySQL官网下载安装包https://dev.mysql.com/downloads/file/?id=480824
这里选择第二个安装包下载即可。
下载完成之后就选择安装那个下载到的文件,基本上都是选择next、execute之类。
这里要设置数据库的密码
这个名称是数据库的名字。
最后安装完成。
2、环境变量配置
前面步骤完成后安装好MySQL,为MySQL配置环境变量。MySQL默认安装在C:\Program Files下。
此电脑->右键->属性->高级系统设置->环境变量->path->编辑->新建->将C:\Program Files\MySQL\MySQL Server 8.0\bin添加进去
3.测试是否安装成功
右击屏幕左下角开始菜单点击管理员权限运行命令提示符,用net start mysql80启动MySQL服务。用net stop mysql80关闭MySQL服务。其中mysql80为Windows下MySQL的服务名。
看到上图,说明安装已经完成。
4.MySQL_Workbench使用
首先打开MySQL_Workbench软件
点击图中的加号,得到下图,先输入数据库的账号密码,帐号默认为root,填好密码后 点击“OK”,连接就建立好了,建立完成后,会出现一个长方形的框框,双击它
弄完之后就会出现下面的界面,点击标红的圈
自己设置数据库的名字,保存。然后APPLY,Finish。
然后在界面左边便出现了创建好的数据库。接下来创建表。点击上图紫色框左边的三角形箭头,打开下来框,右击Tables->Create Table……
在上一步后右边的界面就会出现这个。按照步骤来,先设置表名,再点击右边的双箭头打开扩展,扩展后便是下边的图。
column name表示属性名称,datatype表示属性的类型,点击默认类型如int,varchar有下拉列表可选择。右边的pk表示primary key主键,nn表示not null非空,ai表示auto increment自增,一般来说只用这三个。其他的意思如下:
UQ: unique (column is part of a unique key) 唯一
BIN: binary 二进制(比text更大的二进制数据)
UN: unsigned 整数
ZF: zero fill 值中最有意义的字节总为0,并且不保存。
在这个表中id被设置为主键。因此前面有个亮灯标记。
在此之后点击APPLY。跟前面创建数据库一样。
到此表也创建完成了,在新表中有两个属性。如下图。后面将对表中添加信息。
右击上表中的srt,srt->Select Rows-Limit1000;便出现了下图,在表中添加信息。再点击Apply,跟前面一样。
自此,数据库的创建,表的创建,向表中插入数据都完成了
打开cmd输入下面命令便可查看表中信息
二、vs2017连接MySQL
先新建一个c/c++项目
步骤1
右键单击项目名称,选择属性
步骤2
项目名->属性->c/c+±>常规->附加包含目录 添加路径:C:\\Program Files\\MySQL\\MySQL Server 8.0\\include
(这个是默认路径,选择自己安装的位置即可)
步骤3
链接器->常规->附加库目录 添加路径:C:\\Program Files\\MySQL\\MySQL Server 8.0\\lib
(这个是默认路径,选择自己安装的路径即可)
步骤4:
链接器->输入->附加依赖项 添加:libmysql.lib
** 完成后点击右下角的应用然后确定就OK了下面附上测试图**
如果运行软件提示找不到libmysql.dll请把这个文件从之前附加的目录里面复制到软件的debug目录!!!注意区分32位的目录和64位目录
#include <stdio.h>
#include <stdlib.h>
#include<Windows.h>
#include<mysql.h>
#pragma comment(lib, "libmysql.lib")
int main(void)
{
MYSQL mysql, *sock; //声明MySQL的句柄
const char * host = "127.0.0.1"; //因为是作为本机测试,所以填写的是本地IP
const char * user = "root"; //这里改为你的用户名,即连接MySQL的用户名
const char * passwd = "Z001221z"; //这里改为你的用户密码
const char * db = "student"; //这里改为你要连接的数据库的名字,一个数据可能有几张表
unsigned int port = 3306; //这是MySQL的服务器的端口,如果你没有修改过的话就是3306。
const char * unix_socket = NULL; //unix_socket这是unix下的,我在Windows下,所以就把它设置为NULL
unsigned long client_flag = 0; //这个参数一般为0
const char * i_query = "select * from srt"; //查询语句,从那个表中查询,这里后面没有;
MYSQL_RES * result; //保存结果集的
MYSQL_ROW row; //代表的是结果集中的一行
//my_ulonglong row;
mysql_init(&mysql); //连接之前必须使用这个函数来初始化
if ((sock = mysql_real_connect(&mysql, host, user, passwd, db, port, unix_socket, client_flag)) == NULL) //连接MySQL
{
printf("fail to connect mysql \n");
fprintf(stderr, " %s\n", mysql_error(&mysql));
exit(1);
}
else
{
fprintf(stderr, "connect ok!!\n");
}
if (mysql_query(&mysql, i_query) != 0) //如果连接成功,则开始查询 .成功返回0
{
fprintf(stderr, "fail to query!\n");
exit(1);
}
else
{
if ((result = mysql_store_result(&mysql)) == NULL) //保存查询的结果
{
fprintf(stderr, "fail to store result!\n");
exit(1);
}
else
{
while ((row = mysql_fetch_row(result)) != NULL) //读取结果集中的数据,返回的是下一行。因为保存结果集时,当前的游标在第一行【之前】
{
printf("id is %s\t", row[0]); //打印当前行的第一列的数据
printf("name is %s\t\n", row[1]); //打印当前行的第二列的数据
printf("sex is %s\t\n", row[2]);
//row = mysql_num_row(result);
//printf("%lu\n", mysql_num_row(result));
}
}
}
mysql_free_result(result); //释放结果集
mysql_close(sock); //关闭连接
system("pause");
exit(EXIT_SUCCESS);
}
参考:
https://blog.csdn.net/qq_36761831/article/details/80710349
https://blog.csdn.net/qq_21095573/article/details/82824693