MySQL+VS2015安装配置
作者:互联网
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;
}
标签:CString,数据库,VS2015,len,mysql,MySQL,NULL,安装,sqlCon 来源: https://blog.csdn.net/qq_39714045/article/details/106890451