C#连接和使用MySQL数据库详细教程

本文详细介绍C#连接MySQL的三种方法:添加mysql.data.dll引用、安装动态链接库文件及使用VisualStudio内置方案包。并提供MySQL连接字符串参数解析及基本SQL命令执行示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C#连接MySQL需要添加连接MySQL的引用

本文将介绍3种添加MySQL引用的方法,以及连接MySQL和使用MySQL的教程

C#引用MySQL步骤:

第一种方法:

  1. 下载mysql.data.dll
  2. 将文件放在项目目录下
  3. 在VS2019项目内,引用mysql.data.dll文件
    进入DLL官网下载mysql.data.dll文件(可自选版本下载
    在这里插入图片描述
    点击下载
    在这里插入图片描述
    下载完成,然后解压mysql.data.dll文件
    在这里插入图片描述
    在项目中右键引用->添加引用->浏览->选中MySql.Data.dll文件->确定。操作如下图:

选择引用

在这里插入图片描述

右键引用,点击添加引用

在这里插入图片描述

点击浏览

在这里插入图片描述

选择mysql.data.dll存放的路径

在这里插入图片描述

添加引用之后,点击确定即可

记住勾选dll文件
在这里插入图片描述
点击引用,就可以看到已经添加mysql.data引用(引用属性里可以看到引用详细信息
在这里插入图片描述
第二种方法

  1. 添加动态链接库文件:在官网下载connector/net
  2. 将文件放在项目目录下
  3. 在VS2019项目内,引用mysql.data.dll文件

去MySQL官网下载动态链接库文件

点击Download
在这里插入图片描述
点击No thanks, just start my download.开始下载
在这里插入图片描述
双击程序
在这里插入图片描述
点击Next
在这里插入图片描述

选择安装类型

下面是三种安装类型说明:
Typical>典型:通常安装最常见的程序功能。推荐给大多数用户。
Custom>自定义:允许用户选择哪些程序功能将被安装,以及它们将被安装在哪里。建议高级用户使用。
Complete>完整:全部程序功能将被安装。需要最多的磁盘空间。

一般选择第一个Typical即可。

在这里插入图片描述
点击install进行安装
在这里插入图片描述
看进度条,等待安装即可。
在这里插入图片描述
安装完成
在这里插入图片描述

选择引用

在这里插入图片描述

右键引用,点击添加引用

在这里插入图片描述

mysql.data.dll默认存放的路径

由于我们安装了动态链接库文件直接去C盘选择动态链接库文件
路径C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.23\Assemblies\v4.5.2
可以看到很多动态链接库文件
在这里插入图片描述
当然你也可以使用Everything快速定位mysql.data.dll的文件路径
在这里插入图片描述
输入mysql.data.dll即可快速定位
在这里插入图片描述

继续刚刚添加引用的步骤!!!

点击浏览

在这里插入图片描述

选择mysql.data.dll存放的路径

找到dll文件路径C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.23\Assemblies\v4.5.2
点击添加
在这里插入图片描述
勾选即可,点击确定
在这里插入图片描述
查看引用
在这里插入图片描述
第三种方法:
直接在visual studio内添加mysql方案包
在菜单栏内部选择工具
在这里插入图片描述
点击NuGet包管理器(N)
在这里插入图片描述
点击管理解决方案的NuGet程序包(N).在这里插入图片描述
输入mysql
在这里插入图片描述
选择官方的(作者Oracle),勾选项目
在这里插入图片描述
点击安装
在这里插入图片描述
点击确定(添加成功后会弹窗提示
在这里插入图片描述
点击我接受
在这里插入图片描述
安装成功
在这里插入图片描述

完成以上操作后即可通过代码连接数据库了。

C#使用MySQL

使用using来调用mysql连接,这样使用完后可以自动关闭连接
连接数据库,不用手动写关闭数据库的方法。

导入命名空间using MySql.Data.MySqlClient;
在这里插入图片描述

  • data source=服务器IP地址;
  • database=数据库名称;
  • user id=数据库用户名;
  • password=数据库密码;
  • pooling=是否放入连接池;
  • charset=编码方式;

连接数据库的参数:
string connectstring= "data source=localhost;database=test1;user id=root;password=root;pooling=true;charset=utf8;";
连接数据库的方法:
MySqlConnection msc = new MySqlConnection(connectstring);

补充一下SqlConnectionStringBuilder

在写连接字符串的时候要写很长一段,容易写错
SqlConnectionStringBuilder可以用来帮助我们生成连接字符串.
这样就可以分开来写DataSourceInitialCatalogUserIDPassword 等…

//与数据库连接的信息
            MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder();
            //用户名
            builder.UserID = "root";
            //密码
            builder.Password = "root";
            //服务器地址
            builder.Server = "localhost";
            //连接时的数据库
            builder.Database = "lcz";
            //定义与数据连接的链接
            MySqlConnection connection = new MySqlConnection(builder.ConnectionString);
            //打开这个链接
            connection.Open();

一般写连接字符串

//导入命名空间
using MySql.Data.MySqlClient;

static void Main(string[] args)
        {
            //定义mysql连接字符串
            string constring = "data source=localhost;database=test1;user id=root;password=root;pooling=true;charset=utf8;";
            //连接mysql
            MySqlConnection msc = new MySqlConnection(constring);
        }

MySQL连接字符串参数详细解析

通常数据库连接字符串为:

Database=dbname;Data Source=192.168.1.1;Port=3306;User Id=root;Password=****;Charset=utf8;TreatTinyAsBoolean=false;

参数说明
Server,host, data source, datasource, address, addr, network address数据库位置(以上任何关键字均可)
Database,initial catalog数据库名
Portsocket 端口,默认 3306
ConnectionProtocol,protocol连接协议,默认 Sockets
PipeName,pipe连接管道,默认 MYSQL
UseCompression,compress连接是否压缩,默认 false
AllowBatch是否允许一次执行多条SQL语句,默认 true
Logging是否启用日志,默认 false
SharedMemoryName内存共享的名称,默认 MYSQL
UseOldSyntax,old syntax, oldsyntax是否兼容旧版的语法,默认 false
ConnectionTimeout,connection timeout连接超时等待时间,默认15s
DefaultCommandTimeout,command timeoutMySqlCommand 超时时间,默认 30s
UserID, uid, username, user name, user数据库登录帐号
Password,pwd登录密码
PersistSecurityInfo是否保持敏感信息,默认 false
EncryptEncrypt
CertificateFile证书文件(.pfx)格式
CertificatePassword证书的密码
CertificateStoreLocation证书的存储位置
CertificateThumbprint证书指纹
AllowZeroDateTime日期时间能否为零,默认 false
ConvertZeroDateTime为零的日期时间是否转化为 DateTime.MinValue,默认 false
UseUsageAdvisor, usage advisor是否启用助手,会影响数据库性能,默认 false
ProcedureCacheSize,procedure cache, procedurecache同一时间能缓存几条存储过程,0为禁止,默认 25
UsePerformanceMonitor,userperfmon, perfmon是否启用性能监视,默认 false
IgnorePrepare是否忽略 Prepare() 调用,默认 true
UseProcedureBodies,procedure bodies是否检查存储过程体、参数的有效性,默认 true
AutoEnlist是否自动使用活动的连接,默认 true
RespectBinaryFlags是否响应列上元数据的二进制标志,默认 true
TreatTinyAsBoolean是否将 TINYINT(1) 列视为布尔型,默认 true
AllowUserVariables是否允许 SQL 中出现用户变量,默认 false
InteractiveSession,interactive会话是否允许交互,默认 false
FunctionsReturnString所有服务器函数是否按返回字符串处理,默认 false
UseAffectedRows是否用受影响的行数替代查找到的行数来返回数据,默认 false
OldGuids是否将 binary(16) 列作为 Guids,默认 false
Keepalive保持 TCP 连接的秒数,默认0,不保持。
ConnectionLifeTime连接被销毁前在连接池中保持的最少时间(秒)。默认 0
Pooling是否使用线程池,默认 true
MinimumPoolSize, min pool size线程池中允许的最少线程数,默认 0
MaximumPoolSize,max pool size线程池中允许的最多线程数,默认 100
ConnectionReset连接过期后是否自动复位,默认 false
CharacterSet, charset向服务器请求连接所使用的字符集,默认:无
TreatBlobsAsUTF8binary blobs 是否按 utf8 对待,默认 false
BlobAsUTF8IncludePattern列的匹配模式,一旦匹配将按 utf8 处理,默认:无
SslMode是否启用 SSL 连接模式,默认:MySqlSslMode.None

SQL命令的执行方法:

ExcuteNonQuery执行增改删

  1. insert(增)
  2. updata(改)
  3. delete(删)

ExcuteReader:执行多行查询,返回DataReader对象
ExcuteScalar:执行单行查询,返回查询结果的首行数据
创建MySQL命令对象: MySqlCommand cmd = new MySqlCommand(sql, msc);
读取DataReader对象单行数据: reader.Read()
获取单行字段数据: reader.GetInt32(0); reader.GetString(1);

//导入命名空间
using MySql.Data.MySqlClient;

static void Main(string[] args)
        {
            //定义mysql连接字符串
            string constring = "data source=localhost;database=test1;user id=root;password=root;pooling=true;charset=utf8;";
            //连接mysql
            MySqlConnection msc = new MySqlConnection(constring);
             #region MySQL操作
        //写入sql语句
        string sql = "select * from user";
        //创建命令对象
        MySqlCommand cmd = new MySqlCommand(sql, msc);
        //打开数据库连接
        msc.Open();
        //执行命令,ExcuteReader返回的是DataReader对象
        MySqlDataReader reader = cmd.ExecuteReader();
        //循环单行读取数据,当读取为null时,就退出循环
        while (reader.Read())
        {
            //输出第一列字段值
            Console.Write(reader.GetInt32(0) + "\t");
            //Console.Write(reader.GetInt32("id") + "\t");

            //判断字段"username"是否为null,为null数据转换会失败
            if (!reader.IsDBNull(1))
            {
                //输出第二列字段值
                Console.Write(reader.GetString(1) + "\t");
                //Console.Write(reader.GetString("username") + "\t");
            }
            //判断字段"password"是否为null,为null数据转换会失败
            if (!reader.IsDBNull(2))
            {
                //输出第三列字段值
                Console.Write(reader.GetString(2) + "\n");
                //Console.Write(reader.GetString("password") + "\t");
            }
        }
    }
   
   			 Console.ReadKey();
        }

使用Visual Studio 2019连接MySQL数据库详细教程

请参考我另一篇教程

### C# 连接 MySQL 数据库教程 为了使C#应用程序能够与MySQL数据库交互,需确保开发环境已安装MySQL数据库及其对应的.NET连接器——MySql.Data包[^1]。 #### 创建并打开数据库连接 通过`MySqlConnection`类来创建一个新的数据库连接对象,并利用该对象的方法实现对数据库的操作。下面展示了一个简单的函数用于建立到指定地址、端口、用户名、密码及默认使用数据库名称的连接: ```csharp using MySql.Data.MySqlClient; public MySqlConnection connect() { string connetStr = "server=127.0.0.1;port=3306;user=root;password=a123456.;database=thzdb;"; MySqlConnection con = new MySqlConnection(connetStr); try { con.Open(); Console.WriteLine("数据库连接成功"); } catch (Exception ex) { Console.WriteLine($"发生错误:{ex.Message}"); } return con; } ``` 此代码片段定义了名为`connect()`的方法,它返回一个`MySqlConnection`类型的实例,在尝试打开连接时如果遇到任何异常情况会捕获并打印出来以便调试[^2]。 #### 执行查询语句 一旦建立了有效的连接,则可以使用命令对象(` MySqlCommand`) 来发送SQL指令给服务器执行。这里给出一段示范性的读取数据表记录的例子: ```csharp public void QueryData(MySqlConnection connection, string query) { using (var cmd = new MySqlCommand(query, connection)) { var reader = cmd.ExecuteReader(); while (reader.Read()) { // 假设有一个字符串字段叫name Console.WriteLine(reader.GetString("name")); } reader.Close(); } } ``` 上述方法接收两个参数一个是之前获得的活动状态下的连接另一个是要被执行的具体SQL查询串。当调用ExecuteReader()之后便可以从结果集中逐行获取所需的数据项。 #### 关闭资源释放 完成所有的操作以后应当及时关闭连接以防止潜在的安全风险或者性能下降问题的发生。通常做法是在finally块里处理这一逻辑,也可以采用using语法糖自动管理生命周期内的资源分配回收工作。 ```csharp // 使用Using语句简化资源清理过程 using(var con = connect()){ // 在此处编写业务逻辑... } // 当离开这个作用域的时候,即使抛出了未处理过的异常也会保证connection被正确关闭。 ``` 以上就是有关于C#环境下如何同MySQL进行通信的一些基础知识点介绍以及实践案例分享。
评论 45
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花伤情犹在

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值