C++ VS2022 连接MySQL

1.找到安装MySQL的目录

2.vs2022 右键打开属性

3.添加include 和 lib,注意一定要进去编辑,如果直接在当前框中修改可能会造成“无法打开 kernel32.lib”的报错(就是要选择从父级或者项目默认设置继承)。

4. 再添加上libmysql.lib这个依赖

5.把mysql安装目录里的lib\libmysql.dll复制到c:\windows\system32下

6.测试:

#include <stdio.h> 
#include <mysql.h> // mysql 文件

int main(void) {
	MYSQL mysql; //数据库句柄
	MYSQL_RES* res; //查询结果集 
	MYSQL_ROW row; //记录结构体

	//初始化数据库 
	mysql_init(&mysql);
    
	//设置字符编码
	mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");
    
	//连接数据库
	if (mysql_real_connect(&mysql, "127.0.0.1", "root",//数据库用户名root
		//"password", "database_name"  替换成自己数据库登录密码  表所在的数据库名称
		"password", "database_name", 3306, NULL, 0) == NULL) {
        
		printf("错误原因: %s\n", mysql_error(&mysql));
		printf("连接失败!\n");
		exit(-1);
	}
    
	//查询数据
	int ret = mysql_query(&mysql, "select * from student;");
	//student是自己在数据库中所建的表名
	printf("ret: %d\n", ret);
    
	//获取结果集
	res = mysql_store_result(&mysql);
    
	//给 ROW 赋值,判断 ROW 是否为空,不为空就打印数据。
	while (row = mysql_fetch_row(res)) {
		printf("%s ", row[0]); //打印 ID
		printf("%s ", row[1]); //打印姓名
		printf("%s ", row[2]); //打印班级
		printf("%s \n", row[3]);//打印性别
	}
    
	//释放结果集 
	mysql_free_result(res); 
    
    //关闭数据库
	mysql_close(&mysql);
	system("pause");
	return 0;
}

参考链接:c\c++如何连接mysql数据库(超易上手)_mysql c++-优快云博客 

推荐链接:C/C++连接mysql(api接口方法详解)_mysql c++ api-优快云博客

官方手册:MySQL :: MySQL 8.0 C API Developer Guide :: 5.2 C API Basic Data Structures

### 如何在 Visual Studio 2022 中使用 C++ 连接 MySQL 要在 Visual Studio 2022 中使用 C++ 连接MySQL 数据库,需遵循特定配置流程以确保项目能够成功编译并执行数据库操作。 #### 配置开发环境 安装适用于 C++MySQL Connector 是首要任务。可以从官方网站获取最新版本的 MySQL Connector/C++ 库[^1]。此库提供了必要的驱动程序和 API 来实现应用程序与 MySQL 数据库之间的交互功能。 #### 创建新项目 启动 Visual Studio 2022 并创建一个新的控制台应用 (C++) 或其他类型的 C++ 工程作为起点。随后调整项目的属性设置来匹配所使用的 MySQL Connector 版本需求: - **包含目录**: 将 MySQL Connector 头文件路径添加至 VC++ 目录下的 “Include Directories”。这通常位于 `C:\Program Files\MySQL\Connector C++ X.X\include`。 - **库目录**: 同样地,在相同位置找到对应的静态或动态链接库 (.lib 文件),并将它们所在的文件夹加入到 Linker -> General -> Additional Library Directories 设置项中。 - **依赖项**: 如果采用的是静态链接方式,则还需要把相应的 .lib 名字填入 Linker -> Input -> Additional Dependencies 字段内,比如 `mysqlcppconn.lib`。 #### 编写代码示例 下面给出一段简单的演示代码用于测试连接状态以及查询数据表中的记录数: ```cpp #define WIN32_LEAN_AND_MEAN #include <iostream> #include "mysql_connection.h" // Include driver-specific connection property values #include <cppconn/driver.h> #include <cppconn/exception.h> #include <cppconn/resultset.h> #include <cppconn/statement.h> int main() { try { sql::Driver* driver; std::unique_ptr<sql::Connection> con; /* Create a connection */ driver = get_driver_instance(); con.reset(driver->connect("tcp://127.0.0.1:3306", "root", "")); /* Connect to the MySQL test database */ con->setSchema("test"); /* Create table and insert data */ std::auto_ptr<sql::Statement> stmnt(con->createStatement()); stmnt->execute("DROP TABLE IF EXISTS test"); stmnt->execute("CREATE TABLE test(id INT PRIMARY KEY, label CHAR(1))"); delete stmnt.get(); std::auto_ptr<sql::PreparedStatement> pstmt( con->prepareStatement("INSERT INTO test(id,label) VALUES(?,?)")); for (int i = 'a'; i <= 'z'; ++i) { pstmt->setInt(1, i); pstmt->setString(2, 1, static_cast<char>(i)); pstmt->addBatch(); } int affected_rows = pstmt->executeBatch().size(); std::cout << "Added " << affected_rows << " rows\n"; /* Select data */ std::auto_ptr<sql::ResultSet> res(con->createStatement()->executeQuery("SELECT COUNT(*) FROM test")); while (res->next()) { std::cout << "\n"; std::cout << "Total number of records in TEST is "; std::cout << res->getInt(1); std::cout << ".\n"; } /* Drop table */ con->createStatement()->execute("DROP TABLE test"); /* Close connection */ if (con != NULL) { con->close(); } } catch (sql::SQLException& e) { std::cerr << "# ERR: SQLException in " << __FILE__; std::cerr << "(" << __FUNCTION__ << ") on line " << __LINE__ << '\n'; std::cerr << "# ERR: " << e.what(); std::cerr << " (MySQL error code: " << e.getErrorCode(); std::cerr << ", SQLState: " << e.getSQLState() << " )" << '\n'; return EXIT_FAILURE; } return EXIT_SUCCESS; } ``` 上述例子展示了如何建立与本地 MySQL 实例间的 TCP/IP 连接,并完成基本 CRUD 操作之一——插入多条记录再统计总数后删除临时表格。 #### 解决常见问题 当遇到诸如无法解析符号 (`undefined reference`) 或者找不到指定模块 (`cannot open file`) 类型的问题时,请参照先前提到过的关于正确配置 Makefile 或者项目属性的信息处理办法[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值