本文將介紹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();
}
