C# | VS2019连接MySQL的三种方法以及使用MySQL数据库教程
本文将介绍3种添加MySQL引用的方法,以及连接MySQL和使用MySQL的教程
前篇:Visual Studio 2019连接MySQL数据库详细教程
\]
第一种方法
下载
Mysql.data.dll,下载链接:Here (可自选版本下载)将文件解压至合适的地方
在VS2019项目内,引用
Mysql.data.dll文件在项目中右键引用->添加引用->浏览->选中
MySql.Data.dll文件->确定

完成添加后就可以看到已经添加Mysql.data引用(引用属性里可以看到引用详细信息)

第二种方法
添加动态链接库文件:官网下载 connector/net
如果已经看过前篇博客的话此步已经完成了
将文件放在项目目录下
在VS2019项目内,引用
Mysql.data.dll文件注意,这里的
Mysql.data.dll文件在我们刚刚安装的connector/net的内部文件夹下。如果不记得安装在哪里,可使用 \(Everything\) 快速定位
Mysql.data.dll的文件路径
第三种方法:
直接在 Visual Studio 内添加 mysql 方案包
菜单栏 -> 工具 -> NuGet包管理器(N) -> 管理解决方案的NuGet程序包(N) -> 点击确定(添加成功后会弹窗提示)

完成以上操作后即可通过代码连接数据库了
\]
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 可以用来帮助我们生成连接字符串.
这样就可以分开来写DataSource,InitialCatalog,UserID ,Password 等…
//与数据库连接的信息
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 | 数据库名 |
| Port | socket 端口,默认 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 timeout | MySqlCommand 超时时间,默认 30s |
| UserID, uid, username, user name, user | 数据库登录帐号 |
| Password,pwd | 登录密码 |
| PersistSecurityInfo | 是否保持敏感信息,默认 false |
| Encrypt | Encrypt |
| 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 | 向服务器请求连接所使用的字符集,默认:无 |
| TreatBlobsAsUTF8 | binary blobs 是否按 utf8 对待,默认 false |
| BlobAsUTF8IncludePattern | 列的匹配模式,一旦匹配将按 utf8 处理,默认:无 |
| SslMode | 是否启用 SSL 连接模式,默认:MySqlSslMode.None |
SQL命令的执行方法
ExcuteNonQuery执行增改删:
insert(增)updata(改)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();
}
C# | VS2019连接MySQL的三种方法以及使用MySQL数据库教程的更多相关文章
- jdbc连接oracle的三种方法
jdbc连接oracle的三种方法 使用service_name,配置方式:jdbc:oracle:thin:@//<host>:<port>/<service_name ...
- linux下安装mysql的三种方法:rpm包安装、yum安装、源码包安装
1 安装MySQL数据库服务器安装方法一://查询系统自带的数据库rpm -qa | grep -i mysql //卸载查询到的所有mysqlrpm -e --nodeps mysql-libs-5 ...
- C#后台调用浏览器打开下载连接地址的三种方法
一.从注册表中读取到本地计算机默认浏览器,然后调用下载. private void button1_Click(object sender, EventArgs e) { //从注册表 ...
- HOSt ip is not allowed to connect to this MySql server, MYSQL添加远程用户或允许远程访问三种方法
HOSt ip is not allowed to connect to this MySql server 报错:1130-host ... is not allowed to connect to ...
- Docker MySql 查看版本的三种方法
目录 Docker MySql 查看版本的三种方法 1.mysql -V命令查看版本 2.status命令查看版本 3.version命令查看版本 Docker MySql 查看版本的三种方法 1.m ...
- [mysql]三种方法为root账户指定密码
前言:前段时间把mysql安装后一直没管它,当时就在奇怪为什么mysql登陆不要密码,原来一直用的超用户账户登陆的(简称超级用户) 其实只怪自己太无知,之前一直用的phpbydamin进行的数据库的可 ...
- MySQL创建用户的三种方法 (并授权)转
前言:MySQL创建用户的方法分成三种:INSERT USER表的方法.CREATE USER的方法.GRANT的方法. 一.账号名称的构成方式 账号的组成方式:用户名+主机(所以可以出现重复的用户名 ...
- MYSQL加入远程用户或同意远程訪问三种方法
加入远程用户admin密码为password GRANT ALL PRIVILEGES ON *.* TO admin@localhost IDENTIFIED BY \'password\' WIT ...
- MySQL创建用户的三种方法
前言:MySQL创建用户的方法分成三种:INSERT USER表的方法.CREATE USER的方法.GRANT的方法. 一.账号名称的构成方式 账号的组成方式:用户名+主机(所以可以出现重复的用户名 ...
随机推荐
- spring Data Jpa的依赖+配置
spring data jpa 是spring基于的orm框架,jpa规范的基础上封装的一套JPA应用框架 添加的相关依赖: <properties> <spring.version ...
- Android Kotlin协程入门
Android官方推荐使用协程来处理异步问题.以下是协程的特点: 轻量:单个线程上可运行多个协程.协程支持挂起,不会使正在运行协程的线程阻塞.挂起比阻塞节省内存,且支持多个并行操作. 内存泄漏更少:使 ...
- P5494-[模板]线段树分裂
正题 题目链接:https://www.luogu.com.cn/problem/P5494 题目大意 给出一个可重集合要求支持 将集合\(p\)中在\([l,r]\)的数放到一个新的集合中 将集合\ ...
- 测试开发【提测平台】分享12-掌握日期组件&列表状态格式化最终实现提测管理多条件搜索展示功能
微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 本章内容思维导图如下,由于需要各种状态下的菜单操作,所以需要先实现提测信息的列表基础页面,然后再推进其他需求开发 基本知识点学习 Date ...
- Go语言核心36讲(Go语言基础知识三)--学习笔记
03 | 库源码文件 在我的定义中,库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从 Go 语言规范的话). 这里的"其他代码" ...
- Java基础之(二):Notepad++实现HelloWorld
现在我们开始编写我们的第一个程序:Hello World! HelloWorld 新建一个java文件 文件后缀名为.java Hello.java 代码分析: 接下来写完最大的框之后,那接下来当然就 ...
- 【Azure 应用服务】App Service中运行Python 编写的 Jobs,怎么来安装Python包 (pymssql)呢?
问题描述 在App Service中运行Python编写的定时任务,需要使用pymssql连接到数据库,但是发现使用 python.exe -m pip install --upgrade -r re ...
- 【数据结构与算法Python版学习笔记】图——强连通分支
互联网 我们关注一下互联网相关的非常巨大图: 由主机通过网线(或无线)连接而形成的图: 以及由网页通过超链接连接而形成的图. 网页形成的图 以网页(URI作为id)为顶点,网页内包含的超链接作为边,可 ...
- 如何接入 K8s 持久化存储?K8s CSI 实现机制浅析
作者 王成,腾讯云研发工程师,Kubernetes contributor,从事数据库产品容器化.资源管控等工作,关注 Kubernetes.Go.云原生领域. 概述 进入 K8s 的世界,会发现有很 ...
- Asp.net Core C#进行筛选、过滤、使用PredicateBuilder进行动态拼接lamdba表达式树并用作条件精准查询,模糊查询
在asp.net core.asp.net 中做where条件过滤筛选的时候写的长而繁琐不利于维护,用PredicateBuilder进行筛选.过滤.LInq配合Ef.core进行动态拼接lamdba ...