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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM