1. 程式人生 > 其它 >C# | VS2019連線MySQL的三種方法以及使用MySQL資料庫教程

C# | VS2019連線MySQL的三種方法以及使用MySQL資料庫教程

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

The desire of his soul is the prophecy of his fate
你靈魂的慾望,是你命運的先知。