首先安装mysql,百度搜索到官网下载,下载好后按默认设置安装好,百度里面一大堆安装教程,设置好环境。在此建议如果对数据库完全不懂得话,建议先花2个小时玩玩mysql自带的MySQL Workbench 8.0 CE(我这里安装是新版8.0的版本)。到这里你要先在任务管理器里面把服务打开,不然是没法继续后续操作的,步骤:任务管理器—服务—找到MySQL80或者有的人是MySQL—右键:启动服务。然后打开Workbench ,在里面建立数据库,然后建立一张表格,随便增删改查的玩一玩,看看用人家官方给的工具能否对数据库进行一些基本操作。
接下来就是打开vs2013,新建个MFC工程,基于对话框的,然后进行设置:
(1)项目—>属性—>配置属性—>C/C++—>附加包含目录:在附加包含目录中添加C:\Program Files\MySQL\MySQL Server 8.0\include(就是安装MySql下的include文件夹,将头文件包含)
(2)项目—>属性—>配置属性—>连接器—>常规—>附加库目录:C:\Program Files\MySQL\MySQL Server 8.0\lib(就是安装MySql下的lib文件夹,将库文件包含)
(3)连接器—>输入—>附加依赖项:添加libmysql.lib(若此处不添加,需要最后在头文件中添加 #pragmacomment(lib,"libmysql.lib") )。
(4)编译通过之后,运行还要将C:\Program Files\MySQL\MySQL Server 8.0\lib(安装MySql下的lib文件夹)中的libmysql.dll拷到项目中的Debug文件夹中(或者拷到C:\Windows\System32中)。
(5)如果你下载的MySQL数据库是32位的,那就无所谓;如果你下载的是64位的,那么你还要改一下你的项目配置:点击“项目”—“属性”—右上角有个“配置管理器”—“活动平台解决方案”—“新建”—选择“x64”—“确定”。
(6)设置字符集:点击“项目”—“属性”—“配置属性”—“常规”—“字符集”—“使用多字节字符集”
(7)下载多字节插件:链接http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=40770
下面在项目头文件或者要连接数据库的文件程序中添加头文件:
#include "winsock.h"
#include "mysql.h"
到现在,配置已经完成了,接下来开始贴相关数据库增删改查的代码。
MYSQL m_sqlCon;
//连接数据库
bool CServerToolDlg::ConnectSQLData()
{
mysql_init(&m_sqlCon);
// localhost:服务器 root/123456为账号密码 student为数据库名 3306为端口
if (!mysql_real_connect(&m_sqlCon, "localhost", "root", "123456", "student", 3306, NULL, 0))
{
AfxMessageBox(_T("访问数据库失败!"));
CString e = mysql_error(&m_sqlCon);//需要将项目属性中字符集修改为“使用多字节字符集”或“未设置”
MessageBox(e);
return false;
}
else
{
//AfxMessageBox(_T("成功!"));
int a = mysql_query(&m_sqlCon, "SET NAMES 'GB2312'");//解决从数据库中读取数据后汉字乱码显示的问题
return true;
}
}
//增加数据
int CServerToolDlg::InsertSQLData(CString SQL, char* &Msg)
{
char insert[1000];
//sprintf_s(insert, "insert into str(idstr, name, sex) values (\'9\', \'888\', \'w\')");
strcpy_s(insert, SQL);
if (mysql_query(&m_sqlCon, insert) == 0)
{
//AfxMessageBox(_T("插入数据成功!"));
return 0;
}
else
{
AfxMessageBox(_T("插入数据失败!"));
return 1;
}
}
//修改数据
int CServerToolDlg::UpdateSQLData(CString SQL, char* &Msg)
{
char insert[1000];
strcpy_s(insert, SQL);
if (mysql_query(&m_sqlCon, insert) != 0)
{
AfxMessageBox(_T("修改数据失败!"));
return 1;
}
//AfxMessageBox(_T("修改数据成功!"));
return 0;
}
//删除数据
int CServerToolDlg::DeleteSQLData(CString SQL, char* &Msg)
{
char insert[1000];
strcpy_s(insert, SQL);
if (mysql_query(&m_sqlCon, insert) != 0)
{
AfxMessageBox(_T("删除数据失败!"));
return 1;
}
AfxMessageBox(_T("删除数据成功!"));
return 0;
}
//查询数据
CString CServerToolDlg::SelectSQLData(CString SQL, char* &Msg)
{
int res;
MYSQL_RES *result = NULL;
MYSQL_FIELD *field = NULL;
res = mysql_query(&m_sqlCon, "select * from str where (name = '555')"); //读取数据库student的str表中name的数据
//判断是否读取成功
if (res)
MessageBox("error");
//保存结果
result = mysql_store_result(&m_sqlCon);
//路径数据的个数
int rowcount = mysql_num_rows(result);
CString ss;
ss.Format("%d", rowcount);
MessageBox("有多少行=" + ss);
//字段的个数
int fieldcount = mysql_num_fields(result);
ss.Format("%d", fieldcount);
MessageBox("有多少列=" + ss);
//显示所有字段
for (int i = 0; i < fieldcount; i++)
{
field = mysql_fetch_field_direct(result, i);
//MessageBox(field->name);
}
//显示各个字段下的所有数据
MYSQL_ROW row = NULL;
row = mysql_fetch_row(result);
while (NULL != row)
{
for (int i = 0; i
基本上就是这样,主要在于SQL语句的运用,下面列举几个常用的语句类型:
TRUNCATE TABLE excel1; //清空数据库的内容,并使ID为1
SET SQL_SAFE_UPDATES = 0; //修改数据库的安全模式,0低1高
SELECT * FROM student.str; //列表出来
DELETE FROM str WHERE (sex = 9); //删除指定的内容
SELECT * FROM student.str where (name = '555'); //查询数据
UPDATE str SET sex = 'q' WHERE (idstr = '6'); //修改数据
insert into str(idstr, name, sex) values (\'9\', \'888\', \'w\') //插入数据
INSERT INTO TABLE(col1, col2) SELECT val11, val12 UNION ALL SELECT val21, val22 ; //插入多条数据
最后特别注意的是分号;问题,在MFC中,SQL语句的最后不要带;号。例如我调用上面的一个函数
CString SQL = "insert into str(idstr, name, sex) values (\'9\', \'888\', \'w\')"; //增加指令
SQL = "DELETE FROM str WHERE (idstr = 8)"; //删除指令
SQL = "UPDATE str SET sex = 'qqq' WHERE (idstr = '5')"; //插入指令
UpdateSQLData(SQL, Msg);
//SelectSQLData(SQL, Msg);
//DeleteSQLData(SQL, Msg);
//InsertSQLData(SQL, Msg);
嗯,基本上就是这样了,记录一下,以后用的时候方便点!
普通用户授权指令:
grant select on hypinfo.bom_sum to 'hyjhz'@'%' identified by 'readonly.123';
MySQL远程访问不行解决办法
找到MySQL安装的bin目录,打开cmd窗口,输入下面
mysql -u root -p 123456
use mysql;
update user set host = '%' where user = 'root';
select host,use from user;
flush privileges;