前排提醒,本人只是对 Visual Studio连接MySQl的内容进行系统性的整理,由于CSDN上的关于这方面的内容太散了,所以想着整理一下从零到一的从MySQL的安装,到Visual Studio连接MySQl,再到使用SQL语句在C++程序中实现对数据库数据的读取与写入。
一. MySQL的安装与配置
mysql的下载安装与配置-CSDN博客 文章写得很详细,一步一步跟着下载配置就行。
二. MySQl连接Visual Studio
c/c++访问mysql数据库-CSDN博客 同样的在此处引用大佬的文章。
三. 数据库的读写
关于MySQL数据库的读写,首先得完成上面的步骤。并且数据库的读写都是对本地数据库进行的操作,所以MySQL服务器的地址(127.0.01),MySQL服务器的端口号(3306)都是默认的。当然还得引入#include <mysql.h>头文件才能使用mysql的函数。
(1) 从mysql中读取数据
1.先对数据库进行初始化连接,使用inIn_mysql时传入对应的参数即可,参数分别为数据库密码和想要进行操作的数据库名。
//初始化数据库
MYSQL inIt_mysql(const char* password, const char* dataBaseName)
{
MYSQL mysql; //数据库句柄
//初始化数据库
mysql_init(&mysql);
//连接数据库
if (mysql_real_connect(&mysql, "127.0.0.1", "root",
password, dataBaseName, 3306, NULL, 0) == NULL)
{
cout << "错误原因" << mysql_error(&mysql);
cout << "连接失败!\n";
exit(-1);
}
return mysql;
}
2.从mysql中获取数据并保存到程序中的变量中 ,前提:我创建了一个student的struct,包含id,name,grades,数据库表中的字段也是与struct相对应(这点在设计表字段与结构时应该根据功能进行设计)。传入的参数分别为数据库句柄(数据库初始化时返回的值,参考第一步)以及SQL语句(select 查询语句)。
//通过mysql获取data
vector<student> getMysqlData(MYSQL mysql, const char* sqlString)
{
if (mysql_query(&mysql, sqlString))
{
cout << "查询失败";
return;
}
vector<student> studentVector; //存储数据
MYSQL_RES* res; //查询结果集
MYSQL_ROW row; //记录结构体
res = mysql_store_result(&mysql);
while (row = mysql_fetch_row(res)) {
student stu;
stu.id = stoi(row[2]); //stoi将string转换为int,mysql保存的是string类型
stu.name = row[1];
stu.grades = stoi(row[3]);
studentVector.push_back(stu); //存入vector中
};
mysql_free_result(res); //释放结果集
mysql_close(&mysql); //关闭数据库
}
(2) 将数据写入mysql
这里同样要先对数据库进行初始化(调用定义的inIt_mysql函数即可),传入的参数是student的struct,使用字符串拼接的方法可以对往mysql插入的内容进行动态赋值然后插入想要进行批量插入数据只要写一个循环即可。
//向mysql中存入data
void pushMysqlData(student* st)
{
MYSQL mysql = inIt_mysql("password", "dataBaseName");
int id = st->id;
string name = pre->name;
int grades = pre->grades;
//这里使用的是字符串拼接的方法构造SQL语句(不安全但简单)
string sqlString = "insert into tableName(id,name, grades)
values(" + to_string(id) + ",'" + name + "', " + to_string(grades) + ")";
//c_str()是将其转换为c语言风格的字符串
mysql_query(&mysql, sqlStringr.c_str()); //写入数据
//关闭数据库
mysql_close(&mysql);
}
四.总结
没有总结,完结撒花!!!
本文转载自: https://blog.csdn.net/weixin_72479477/article/details/137704572
版权归原作者 扬帆996 所有, 如有侵权,请联系我们删除。
版权归原作者 扬帆996 所有, 如有侵权,请联系我们删除。