Visual Studio 2022 C++连接MySql数据库(win7和win10亲测有效)

菜鸟生成记(91)

VS2022在win7上安装时,会提示“部分功可能会失效”,但是目前win7运行VS2022未发现异常,能用win10尽量用win10;(我的电脑太辣鸡了,一直没更新win10,不常用,懒得更新,一直白嫖实验室的台式机)

dalao的文件配置教程<----点这里

按照上面的教程配置文件后,还有可能出现另一个问题(win7和win10均出现该问题),

“由于找不到libmysql.dll,无法继续执行代码。重新安装程序可能会解决此问题。”

在这里插入图片描述

libmysql.dll文件是MySQL的动态链接库文件,缺少此文件数据库无法正常工作

解决方法

找到mysql的安装目录
//这是我的安装路径
(1)C:\Program Files\MySQL\MySQL Server 8.0\lib
复制lib文件夹下有个libmysql.dll
(2)将libmysql.dll粘贴到
C:\WINDOWS\System32
System32文件夹中

至此文件配置基本完成,然后之后出现一些问题例如:0x0000011与0x0013123地址访问冲突等,大概率是mysql语句写错了,也可能是操作空指针(select查询会返回结果集,其他返回的是空集),C++的异常抛出信息有点儿含糊不清(这就要凭经验Debug了,疯狂试错)

//main.cpp
#include"mysql_option.h"
int main(){
	mysql_option();
	return 0;
}
//mysql_option.h
#include<iostream>
#include<mysql.h>
#include<string>
using namespace std;
void getConnection(MYSQL& mysql, string host, string userName, string passWord, string dbName);
void select(MYSQL& mysql, string op);
void insert(MYSQL& mysql, string op);
void update(MYSQL& mysql, string op);
void delete_(MYSQL& mysql, string op);
int mysql_option();
//mysql_option.cpp
#include"mysql_option.h"
//与MySql数据库建立连接
void getConnection(MYSQL& mysql, string host, string userName, string passWord, string dbName) {
	mysql_init(&mysql);// 初始化一个MYSQL 连接的实例对象
	//连接MySql
	mysql_real_connect(&mysql, host.c_str(), userName.c_str(), passWord.c_str(), dbName.c_str(), 3306, 0, 0);
	//我在win7和win10都会出现中文乱码,修改数据库编码方式解决问题
	mysql_query(&mysql, "SET NAMES GB2312");//修改mysql编码方式
	//mysql_query(&mysql, "SET NAMES UTF8");
}
void select(MYSQL& mysql, string op) {//查询(op:mysql操作语句)
	mysql_query(&mysql, op.c_str());
	MYSQL_ROW row; //char** 二维数组,存放一条条记录
	MYSQL_RES* res = mysql_store_result(&mysql);//返回结果集
	int count1 = mysql_num_rows(res);//获取记录个数(参数为结果集行数,仅select可用)
	int count2 = mysql_num_fields(res);//返回字段个数(表的列数)
	int k = 1;
	cout << "共:" << count1 << "条记录" << endl;
	while ((row = mysql_fetch_row(res)) != NULL) {//获取结果集(res)中的一行,并且指针指向下一行
		printf("第 %-3d 行:",k);
		for (int i = 0; i < count2; ++i)
			printf("%-10s\t", row[i]);//输出字段值
			//cout << string(row[i]) << " ";
		cout << endl;
		++k;
	}
}
void insert(MYSQL& mysql, string op) {//插入
	int count = 0;
	mysql_query(&mysql, op.c_str());
	count = mysql_affected_rows(&mysql);//参数为mysql结构体(返回操作影响行数)
	printf("插入:%d 条记录\n", count);
}
void update(MYSQL& mysql, string op) {//更新
	int count = 0;
	mysql_query(&mysql, op.c_str());
	count = mysql_affected_rows(&mysql);//参数为mysql结构体(返回操作影响行数)
	printf("更新:%d 条记录\n", count);
}
void delete_(MYSQL& mysql, string op) {//删除
	int count = 0;
	mysql_query(&mysql, op.c_str());
	count = mysql_affected_rows(&mysql);//参数为mysql结构体(返回操作影响行数)
	printf("删除:%d 条记录\n", count);
}
int mysql_option() {

	MYSQL mysql;//数据库结构体
	string host = "localhost";
	string userName = "root";//这是我的mysql账户
	string passWord = "root";///这是我的mysql账户密码
	string dbName = "zyh1";//这是我的mysql数据库名
	getConnection(mysql, host, userName, passWord, dbName);
	//insert(mysql, "insert into stuzyh values('xinggong','2021','zyh')");
	//delete_(mysql, "delete from stuzyh where 姓名='zyh'");
	update(mysql, "update stuzyh set 院部='信工' where 院部='xinggong'");
	select(mysql, "select * from stuzyh");//只有查询才有结果集
	mysql_close(&mysql); // 释放一个MYSQL 连接
	return 0;
}

在这里插入图片描述

### 配置 Visual Studio 2022 连接MySQL 数据库 #### 安装必要的组件 为了使 Visual Studio 2022 能够连接MySQL 数据库,需下载并安装特定工具。访问官方网站,在 DOWNLOADS--->Community--->MySQL on Windows--->MySQL for Visual Studio 中获取相应软件包[^1]。 #### 设置环境变量与路径 前往 MySQL 的安装目录,定位至 ServerSqlInstall 文件夹下的 include 子文件夹内,通过选择该位置来完成设置过程中的确认操作[^2]。 #### 创建数据库表结构 对于 .NET 开发者来说,创建一个用于存储用户信息的基础表格是常见的需求之一。下面是一个 SQL 建表语句的例子: ```sql CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, pwd VARCHAR(50) NOT NULL, age INT, phone VARCHAR(50) ); ``` 接着可以向此 `users` 表中插入一些初始记录以便后续试使用: ```sql INSERT INTO users (name, pwd, age, phone) VALUES ('张三', '123456', 20, '13000000000'), ('李四', '123', 50, '17611111111'), ('王五', '0000', 10, '18522222222'); ``` 以上步骤有助于构建起基本的数据模型框架[^3]。 #### 编写 C# 应用程序代码片段 当上述准备工作完成后,便可以在 Visual Studio 项目里编写如下所示的 C# 代码来进行简单的登录验证逻辑实现: ```csharp using MySql.Data.MySqlClient; // ... string connectionString = "server=localhost;user=root;database=testdb;charset=utf8;"; MySqlConnection connection = new MySqlConnection(connectionString); try { connection.Open(); string query = @"SELECT * FROM users WHERE name=@username AND pwd=@password"; MySqlCommand command = new MySqlCommand(query, connection); command.Parameters.AddWithValue("@username", usernameInput.Text); // 用户名输入框控件名称 command.Parameters.AddWithValue("@password", passwordInput.Text); // 密码输入框控件名称 using(MySqlDataReader reader = command.ExecuteReader()) { if(reader.Read()){ MessageBox.Show("登录成功!"); }else{ MessageBox.Show("用户名或密码错误"); } } } catch(Exception ex){ Console.WriteLine(ex.Message); } finally { connection.Close(); } ``` 这段代码展示了如何利用 ADO.NET 技术栈配合 MySQL Connector/Net 来执行查询命令并与前端界面交互。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值