笨蛋学C++ 之 VS2019使用C++连接数据库
- 创建数据库
- SQL语句
- VS2019
- 选择空项目,点击下一步创建
- 输入项目名称,点击创建
- 创建成功
- 点击新建项创建源文件
- 因为mysql是64位,此时的c++项目是86位,所以这里需要将项目修改为x64位
- 点击项目 -> 0501-test 属性 -> 将配置和平台修改为Debug、x64
- 此时的软件页面也要修改为Debug、x64
- 修改**C/C++**下的**常规**模块的**附加包含目录**的项目的include文件位置,点击项目 -> 0501-test 属性 -> C/C++ -> 附加包含目录 -> 点击编辑 -> 将自己mysql安装的include路径复制到窗口中 -> 点击确定
- 点击项目 -> 0501-test 属性 -> 链接器 -> 常规 -> 附加库目录 -> 点击编辑 -> 将自己mysql安装的lib路径复制到窗口中 -> 点击确定
- 点击项目 -> 0501-test 属性 -> 链接器 -> 输入 -> 附加依赖项 -> 点击编辑 -> 输入**libmysql.lib** -> 点击确定
- 点击应用 -> 点击确定
- 修改数据库密码、数据库名,测试连接
- 连接成功,成功插入数据
创建数据库
SQL语句
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` int NOT NULL,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
---------------------------------------------------------------
INSERT INTO `test` VALUES (1, 'jack');
INSERT INTO `test` VALUES (2, 'tom');
INSERT INTO `test` VALUES (3, 'smith');
VS2019
-
修改C/C++下的常规模块的附加包含目录的项目的include文件位置,点击项目 -> 0501-test 属性 -> C/C++ -> 附加包含目录 -> 点击编辑 -> 将自己mysql安装的include路径复制到窗口中 -> 点击确定
#include <mysql.h>
#include <iostream>
#include <cstring> // 包含字符串操作相关的头文件
using namespace std;
const char* host = "127.0.0.1";
const char* user = "root";
const char* password = "P@ssw0rd";
const char* database_name = "c++test";
const int port = 3306;
typedef struct Test {
int id;
string name;
} Test;
int main(void) {
// 设置链接
MYSQL* con = mysql_init(NULL);
// 设置编码
mysql_options(con, MYSQL_SET_CHARSET_NAME, "GBK");
if (!mysql_real_connect(con, host, user, password, database_name, port, NULL, 0)) {
cerr << "Failed to connect to database Error: " << mysql_error(con) << endl;
return -1;
}
Test test{ 4,"wangwu" };
char sql[1024];
sprintf_s(sql, sizeof(sql), "INSERT INTO test (id,name) VALUES (%d,'%s')", test.id, test.name.c_str());
if (mysql_query(con, sql)) {
cerr << "Failed to insert to database Error: " << mysql_error(con) << endl;
return -1;
}
mysql_close(con);
return 0;
}