在Windows中使用C#连接Mysql数据库比较简单,可以直接使用MySql.Data库,目前最新版本为:8.3.0。 当然也可以结合MySql.Data和Dapper库一起使用,目前Dapper的最新版本为:2.1.35。 Dapper是一款轻量级ORM工具,是一个简单的.NET对象映射器,在速度上几乎与使用原始ADO.NET数据读取器的速度一样快。ORM是一个对象关系映射器,它负责数据库和编程语言之间的映射。Dapper通过扩展IDbConnection提供一些有用的扩展方法去查询数据库,提供了一种简单、高效的方式来执行数据库查询、插入、更新和删除操作。
准备条件: (1)、OS:Windows 10或Windows11 (2)、Visual Stuidio 2022 (3)、MySQL安装包,比如mysql-installer-web-community-8.0.36.0.msi
本文使用的Visual Studio版本是VS2022,MySQL版本为:8.0.36,对应的下载地址为:mysql-installer-web-community-8.0.36.0.msi,并采用C# .Net WinForm窗体程序作为演示示例,我们展示如何使用Mysql.Data和Dapper连接MySql数据库,并查询MySql数据库中对应的people表,然后在窗体程序中输入字段LastName来查询对应的数据,鼠标按下search
按钮,在ListBox中展示从MySQL数据库中的查询结果;另外我们在下方的三个输入框中分别输入用户的FirstName、LastName、EmailAddress字段,然后鼠标点击insert
按钮,往数据库表中插入一条记录。最终的程序界面如下图所示:
(1)、根据LastName查询记录 我们首先在输入框中输入LastName如蒋(英文中LastName代表中文中的姓,FirstName代表中文中的名),然后鼠标点击【Seach】按钮,查询的结果展示在下方中的ListBox中,如下图所示:
(2)、往数据库people表中插入一条记录
我们首先在下面的FirstName
、LastName
、EmailAddress
三个文本框中输入对应的数据,然后鼠标点击insert
按钮,即可插入一条记录。
注意:由于Id是主键自增的,所以不用管。
执行插入记录后,原来输入的FistName
、LastName
、EmailAddress
记录会被清空,如下图所示:
接下来我们输入在最上方根据刚刚输入的LastName
:蒋,看FirstName
为青青,LastName
为蒋,EmailAddress
为[email protected]的那条记录是否入库,如下图所示:
完整的C#窗体程序代码我已经上传到github上面了:
git clone https://github.com/ccf19881030/WindowsFormsMySqlDbApp.git
或者直接下载https://github.com/ccf19881030/WindowsFormsMySqlDbApp/archive/refs/heads/main.zip源代码即可,
基于VS2022,创建一个WinForm .Net窗体程序,如下图所示:
最终的程序代码结构如下图所示:
创建项目名称为WindowsFormsMySqlDbApp
的C#窗体程序之后,通过项目中的引用-》管理 NuGet 程序包(N)-》浏览,分别输入MySql.Data和Dapper,然后点击安装:
WinForm界面如下图所示:
WinForm界面和MFC一样很简单,只由Label
、TextBox
、Button
、ListBox
这四种控件组成。
安装mysql-installer-web-community-8.0.36.0.msi数据库安装包之后,我们root
账号的初始密码设置为123456
,然后使用Navicat Premium 16连接并登录本地MySQL数据库,然后先创建ytdemo
数据库,然后在该数据库中创建people
表,其字段结果如下图所示:
people
表结构的脚本如下:
people.sql
/*
Navicat Premium Data Transfer
Source Server : localhost_mysql_root
Source Server Type : MySQL
Source Server Version : 80036
Source Host : localhost:3306
Source Schema : ytdemo
Target Server Type : MySQL
Target Server Version : 80036
File Encoding : 65001
Date: 09/03/2024 14:34:56
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for people
-- ----------------------------
DROP TABLE IF EXISTS `people`;
CREATE TABLE `people` (
`Id` int NOT NULL AUTO_INCREMENT,
`FirstName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`LastName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`EmailAddress` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`Id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 33 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
然后往数据库表中插入一些测试数据,如下图所示:
people
的测试数据如下:
-- ----------------------------
-- Records of people
-- ----------------------------
INSERT INTO `people` VALUES (1, 'Timothy', 'Corey', '[email protected]');
INSERT INTO `people` VALUES (2, 'Jane', 'Simth', '[email protected]');
INSERT INTO `people` VALUES (3, 'Sue', 'Storm', '[email protected]');
INSERT INTO `people` VALUES (4, 'Bob', 'McClure', '[email protected]');
INSERT INTO `people` VALUES (5, 'Mary', 'Jones', '[email protected]');
INSERT INTO `people` VALUES (6, 'Ray', 'Stone', '[email protected]');
INSERT INTO `people` VALUES (7, '操', '曹', '[email protected]');
INSERT INTO `people` VALUES (8, '权', '孙', '[email protected]');
INSERT INTO `people` VALUES (9, '备', '刘', '[email protected]');
INSERT INTO `people` VALUES (10, '飞', '张', '[email protected]');
INSERT INTO `people` VALUES (11, '羽', '关', '[email protected]');
INSERT INTO `people` VALUES (12, '亮', '诸葛', '[email protected]');
INSERT INTO