1.安装Mysql
- 下载并安装mysql
- 设置环境变量
- (网上有很多教程,按需选择,不再展示)
2.访问Mysql数据库
- 打开mysql的安装目录(默认:C:\Program Files\MySQL\MySQL Server 8.0),检查lib和include目录
- 新建一个空工程,解决方案选择x64(mysql 8.0以上必须)
- 右键工程选择属性 — VC++目录 — 包含目录 — 添加mysql安装路径下include的路径:
- VC++目录 — 库目录 — 添加mysql安装路径下lib的路径:
- 要指明使用哪个库文件。属性 — 链接器 — 输入 — 附加依赖项,添加lib目录下的libmysql.lib文件名
- 因为单独点击编译后的可执行文件运行(或者命令行运行)的时候需要调用libmysql.dll文件,所以需要将它复制到 C:\windows\system32(或复制到生成可执行文件的目录(一般是x64/Devyg)下) 目录下
- System32是系统目录,很多应用程序放在System32下,执行时只需要输入或调用xxx.exe即可(一般系统会默认加载)
- 在上面添加mysql安装路径下lib的路径到库目录后,直接在vs中运行时不需要添加libmysql.dll到任何地方,vs运行时会直接索引到需要的dll附加到可执行文件(.exe)中
3.增删改查代码示例
// TestConnectMysql.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <mysql.h>
using std::cout;
using std::endl;
int main()
{
std::cout << "Hello World!\n";
MYSQL mysql; //数据库句柄
MYSQL_RES* res = nullptr; //查询结果集
MYSQL_ROW row; //记录结构体
mysql_init(&mysql); //初始化数据库
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk"); //设置字符编码
do {
//连接数据库
if (!mysql_real_connect(&mysql, "127.0.0.1", "root", "supercoder6821", "TestConnectCpp", 3306, NULL, 0)) {
cout << "Error : " << mysql_error(&mysql) << endl;
break;
}
//插入数据 成功返回0,查询失败返回随机值
int ret = mysql_query(&mysql, "insert into test values(3, '王五', 25)");
if (ret) {
cout << "Error: Query[insert] fail." << endl;
break;
}
cout << "Query[insert] success." << endl;
if (mysql_query(&mysql, "select * from test where id = 3")) { //查询数据
cout << "Query[select] fail." << endl;
break;
}
res = mysql_store_result(&mysql); //查询结果集
row = mysql_fetch_row(res);
cout << "ID: " << row[0] << " Name: " << row[1] << " Age: " << row[2] << endl;
//删除数据 成功返回0,查询失败返回随机值
if (mysql_query(&mysql, "delete from test where id = 3")) {
cout << "Error: Query[delete] fail." << endl;
break;
}
cout << "Query[delete] success." << endl;
//修改数据 成功返回1,查询失败返回0
if (mysql_query(&mysql, "update test set name = 'Test', age = 10 where id = 2")) {
cout << "Error: Query[update] fail." << endl;
break;
}
cout << "update success." << endl;
//查询数据 成功返回0,查询失败返回随机值
if (mysql_query(&mysql, "select * from test;")) {
cout << "Query[select] fail." << endl;
break;
}
res = mysql_store_result(&mysql); //查询结果集
//根据结果集获取数据,如果不为空则打印
while (row = mysql_fetch_row(res)) { //mysql_fetch_row:检索结果集的下一行
cout << "ID: " << row[0] << " Name: " << row[1] << " Age: " << row[2] << endl;
}
}while(0);
if (res != nullptr) {
mysql_free_result(res); //释放结果集
}
mysql_close(&mysql);
system("pause");
return 0;
}