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