利用Vscode、c++调用mysql数据库
从安装到实现操作(留个记录防止忘记)
操作1、在Ubuntu下安装mysql(链接如下)
参考链接如下:
sudo apt-get update sudo apt-get install mysql-server
启动重启:
#启动: sudo service mysql start #重启: sudo service mysql restart #关闭: sudo service mysql stop
修改mysql链接方式
// 不需要输入密码,直接回车 sudo mysql -u root -p #开启远程连接 update user set host='%' where user='root'; #修改了之后刷新以下权限 flush privileges; #修改数据库密码. ALTER USER 'root'@'%' identified with mysql_native_password BY '123'; #修改了之后刷新以下权限 flush privileges; #退出数据库 quit;
操作2: 创建等会需要用的数据库及数据表
CREATE DATABASE myweb;
create table studen( id int(10), passwoed varchar(40),salary float);
操作三:vscode中c++链接数据库
配置文件tasks.json中添加:
"-I/www/server/mysql/include", "-L/www/server/mysql/lib", "-lmysqlclient",
代码(以向数据库添加内容为例子):
#include<iostream> #include <mysql/mysql.h> #include <string> #include <sstream> #include <iostream> using namespace std; #define HOST "127.0.0.1" #define PORT 3306 #define USER "root" #define PASSWD "123" #define DBNAME "myweb" // 将double转为string std::string double2string(const double& d) { std::stringstream s_tmp; s_tmp << d; std::string s = s_tmp.str(); return s; } int add_key_to_stu(MYSQL *mysql,int id, const std::string& name) { // 1.将传入的参数处理为一个完整的sql语句 // 因为第一个编号参数,配置的是自增,所以需要传入null std::string sql_cmd = "insert into student(id, passwoed) values ("; sql_cmd+= double2string(id); sql_cmd+= ",'"; sql_cmd+= name; sql_cmd+= "');"; cout << "[INFO] " << sql_cmd << endl; // 2.执行语句 int ret = mysql_query(mysql,sql_cmd.c_str()); if(ret!=0) { cerr << "[ERR] mysql insert error: " << mysql_error(mysql) << endl; } return ret; } int main() { // 连接数据库 // 初始化 MYSQL *mysql = mysql_init(nullptr); if (mysql == nullptr) // 返回值为空代表init失败 { cerr << "[ERR] init mysql handle failed!\n"; return -1; } // 连接 cout << "[INFO] connect to " << HOST << ":" << PORT << " " << USER << " " << DBNAME << endl; // 第一个参数为输出型参数。返回值为MYSQL的起始地址,如果错误返回NULL if (mysql_real_connect(mysql, HOST, USER, PASSWD, DBNAME, PORT, nullptr, 0) == nullptr) { cerr << "[ERR] mysql connect error: " << mysql_error(mysql) << endl; return -1; } // 配置为和数据库同步的utf8字符集 mysql_set_character_set(mysql, "utf8"); // 到这里就已经成功了 cout << "[INFO] mysql database connect success!" << endl; add_key_to_stu(mysql,2,"asfdg"); // 关闭连接 mysql_close(mysql); return 0; }
结果: