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

前篇:Visual Studio 2019连接MySQL数据库详细教程


\[QAQ \]


第一种方法

  1. 下载 Mysql.data.dll,下载链接:Here可自选版本下载
  2. 将文件解压至合适的地方
  3. 在VS2019项目内,引用 Mysql.data.dll 文件
    在项目中右键引用->添加引用->浏览->选中MySql.Data.dll文件->确定

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

第二种方法

  1. 添加动态链接库文件:官网下载 connector/net如果已经看过前篇博客的话此步已经完成了
  2. 将文件放在项目目录下
  3. 在VS2019项目内,引用 Mysql.data.dll 文件
    注意,这里的 Mysql.data.dll 文件在我们刚刚安装的 connector/net 的内部文件夹下。
    如果不记得安装在哪里,可使用 \(Everything\) 快速定位Mysql.data.dll的文件路径

第三种方法:

直接在 Visual Studio 内添加 mysql 方案包

菜单栏 -> 工具 -> NuGet包管理器(N) -> 管理解决方案的NuGet程序包(N) -> 点击确定(添加成功后会弹窗提示


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


\[QAQ \]


C#使用MySQL

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

数据库名

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执行增改删

  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();
}