MySQL+VS2015安装配置

MySQL数据库安装配置

数据库下载

https://dev.mysql.com/downloads/mysql/
根据自己需求选择数据库的版本,我这里下载的版本是mysql-5.7.25-win32

数据库安装

下载解压之后放置某个文件位置上,推荐放置C盘,我这里的路径是:C:\mysql-5.7.25-win32,然后配置系统环境变量。右键此电脑 →属性→高级系统设置→环境变量→系统变量下的path项中添点如下环境变量在这里插入图片描述
配置好之后,win+R输入cmd进入命令提示符中,输入mysql,出现如下结果,数据库路径配置成功
在这里插入图片描述
然后执行quit行命令退出,之后在执行以下命令:
#作用:在C:\mysql-5.7.25-win32\bin目录下生成data目录

mysqld --initialize-insecure --user=mysql

在这里插入图片描述
#安装mysql

mysqld -install

#启动服务

net start MySQL

#登录数据库(起始数据库默认没有密码,按下Enter即可)

mysql -u root -p

#查询用户密码命令

select host,user,authentication_string from mysql.user;

#设置(或修改)root用户密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

#保存,执行此命令后,设置才生效,若不执行,还是之前的密码不变

flush privileges;

#退出重登,验证密码是否修改成功

quit

至此数据库安装配置完成

VS2015中配置MySQL环境

创建项目引入包含库

首先创建一个MFC项目,然后将将:C:\mysql-5.7.25-win32 文件下的include文件和lib文件下的libmysql.lib以及libmysql.dll分别复制到项目中自定义的文件夹中,如下所示:
在这里插入图片描述
在这里插入图片描述
注意:不要忘记将数据库lib文件中的libmysql.dll放置在Debug或者Release中
在这里插入图片描述

配置项目中所需属性

在MFC的属性管理中选择要添加数据库环境的项目,右键添加新新项目属性表,我这里将其命名为mysql
在这里插入图片描述
然后配置过程如下图所示(注:这边的路径是相对路径是根据数据库文件和项目之间的相对位置)
项目位置:E:\VS_Demo\ComputerizedSystemLogin
在这里插入图片描述
mysql文件的位置:E:\VS_Demo\ComputerizedSystemLogin\include
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此数据库配置完成

VS2015中数据库的使用

.h头文件

#引入数据库

#include "mysql.h"

#数据库三个主要变量的定义

MYSQL_RES *result;
MYSQL_ROW row;
MYSQL m_sqlCon;

.CPP文件

//传入ip:127.0.0.1  数据库用户名:root 数据库用户密码:123456 数据库名称:mysqlDB 数据库端口:3306
BOOL MySQLDll::ConnectDB(CString strIP, CString strSqlUser, CString strSqlPassworld, CString strDataBase, int sqlPoint) {
	mysql_library_init(0, NULL, NULL);
	mysql_init(&m_sqlCon);
	if (!mysql_real_connect(&m_sqlCon, CStringToCharArray(strIP), CStringToCharArray(strSqlUser), CStringToCharArray(strSqlPassworld), CStringToCharArray(strDataBase), sqlPoint, NULL, 0))
	{
		//AfxMessageBox(_T("访问数据库失败!"));
		CString e = ANSIToUnicode(mysql_error(&m_sqlCon));//需要将项目属性中字符集修改为“使用多字节字符集”或“未设置”  
		//AfxMessageBox(e);
		return FALSE;
	}
	else
	{
		//AfxMessageBox(_T("访问数据库成功!"));
		return TRUE;
	}
}

BOOL MySQLDll::DisconnectDB()
{
	mysql_close(&m_sqlCon);//关闭Mysql连接  
	return TRUE;
}
wchar_t * ANSIToUnicode(const char *pStr)
{
	//int nLen = strlen(pStr);确保pStr以0为结束符
	// 先计算需要的宽字符空间长度
	int nUnicodeLen = ::MultiByteToWideChar(CP_ACP,
		0,
		pStr,
		-1, // 确保pStr以0为结束符
		NULL,
		0);
	wchar_t *pUnicode = new wchar_t[nUnicodeLen + 1];
	memset(pUnicode, 0, (nUnicodeLen + 1) * sizeof(wchar_t));
	// 再转换
	::MultiByteToWideChar(CP_ACP,
		0,
		pStr,
		-1,
		(LPWSTR)pUnicode,
		nUnicodeLen);

	return pUnicode;
}
//查询数据
BOOL MySQLDll::SelectFromDB(CString strWrite2Sql)
{
	mysql_query(&m_sqlCon, "SET NAMES 'GB2312'");//解决从数据库中读取数据后汉字乱码显示的问题 
	if (mysql_real_query(&m_sqlCon, CStringToCharArray(strWrite2Sql), (unsigned long)strWrite2Sql.GetLength()))
	{
		AfxMessageBox(_T("查询数据失败!"));
		CString e = ANSIToUnicode(mysql_error(&m_sqlCon));//需要将项目属性中字符集修改为“使用多字节字符集”或“未设置”  
		AfxMessageBox(_T("数据库查询失败:") + e);
		return FALSE;
	}
	else {
	    result = mysql_store_result(&m_sqlCon);
		while (row = mysql_fetch_row(result))
		{
			CString Operator = (CString)row[0];
		}
	}
	return TRUE;
}
//将CString变量转换成char*类型
char* CStringToCharArray(CString cStr)
{
	char *ptr;

#ifdef _UNICODE
	LONG len;
	len = WideCharToMultiByte(CP_ACP, 0, cStr, -1, NULL, 0, NULL, NULL);
	ptr = new char[len + 1];
	memset(ptr, 0, len + 1);
	WideCharToMultiByte(CP_ACP, 0, cStr, -1, ptr, len + 1, NULL, NULL);
	/*LONG len;
	len = WideCharToMultiByte(CP_UTF8, 0, cStr, -1, NULL, 0, NULL, NULL);
	ptr = new char[len + 1];
	memset(ptr, 0, len + 1);
	WideCharToMultiByte(CP_UTF8, 0, cStr, -1, ptr, len + 1, NULL, NULL);*/
#else
	ptr = new char[cStr.GetAllocLength() + 1];
	sprintf(ptr, _T("%s"), cStr);
#endif

	return ptr;
}
//写入数据  参数:数据库表名称
BOOL MySQLDll::SetMsgToDB(CString strTable)
{
	CString insert2sql;
	mysql_query(&m_sqlCon, "SET NAMES 'GB2312'");
	//插入语句
	insert2sql.Format(_T("insert into %s(Operator) values ( '王二')"), strTable);
	USES_CONVERSION;
	char * q = T2A(insert2sql);//解决中文字符错误问题
	if (mysql_query(&m_sqlCon, q) != 0)
	{
		AfxMessageBox(_T("插入数据失败!"));
		CString e = ANSIToUnicode(mysql_error(&m_sqlCon));//需要将项目属性中字符集修改为“使用多字节字符集”或“未设置”  
		AfxMessageBox(_T("数据插入失败:") + e);
		return FALSE;
	}
	return TRUE;
}

猜你喜欢

转载自blog.csdn.net/qq_39714045/article/details/106890451