C# | VS2019連線MySQL的三種方法以及使用MySQL資料庫教程
本文將介紹3種新增MySQL引用的方法,以及連線MySQL和使用MySQL的教程
前篇:Visual Studio 2019連線MySQL資料庫詳細教程
\[QAQ \]
第一種方法
-
下載
Mysql.data.dll
,下載連結:Here (可自選版本下載
) -
將檔案解壓至合適的地方
-
在VS2019專案內,引用
Mysql.data.dll
檔案在專案中右鍵引用->新增引用->瀏覽->選中
MySql.Data.dll
檔案->確定
完成新增後就可以看到已經新增Mysql.data
引用(引用屬性裡可以看到引用詳細資訊
)
第二種方法
-
新增動態連結庫檔案:官網下載
如果已經看過前篇部落格的話此步已經完成了
-
將檔案放在專案目錄下
-
在VS2019專案內,引用
Mysql.data.dll
檔案注意,這裡的
Mysql.data.dll
檔案在我們剛剛安裝的connector/net
的內部資料夾下。如果不記得安裝在哪裡,可使用 \(Everything\) 快速定位
Mysql.data.dll
的檔案路徑
第三種方法:
直接在 Visual Studio
內新增 mysql
方案包
選單欄
-> 工具
-> NuGet包管理器(N)
-> 管理解決方案的NuGet程式包(N)
-> 點選確定(新增成功後會彈窗提示
完成以上操作後即可通過程式碼連線資料庫了
\[QAQ \]
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();
}
The desire of his soul is the prophecy of his fate
你靈魂的慾望,是你命運的先知。