系統環境
- Windows7 x64
- 5.6.12-log MySQL Community Server (GPL
- Microsoft Visual Studio Express 2015 For Windows Desktop
選擇Connector/Net作為C#連接Mysql的驅動程式,
先到下載頁面下載Connector/Net6.9.8,
下載下來的檔名為mysql-connector-net-6.9.8.msi。
Starting with version 6.7, Connector/Net will no longer include the MySQL for Visual Studio integration. That functionality is now available in a separate product called MySQL for Visual Studio available using the MySQL Installer for Windows (seehttp://dev.mysql.com/tech-resources/articles/mysql-installer-for-windows.html).
(頁面中提醒,6.7版本以前,Connector/Net 包含 MySQL for Visual Studio,而從6.7開始,MySQL for Visual Studio被包含進MySQL Installer for Windows中。我現在用的Visual Studio版本Microsoft Visual Studio Express 2015 For Windows Desktop並不在MySQL for Visual Studio的支援列表,我不能使用MySQL for Visual Studio,所以直接下載最新的Connector/Net 6.9.8版本就好了,沒有MySQL for Visual Studio也沒關係。)
安裝
mysql-connector-net-6.9.8.msi點兩下進入安裝畫面。 Typical→Install
連接
建立一個新的C# WPF專案來做測試,名稱為ConnectMysql。
打開Visual Studio→檔案→新增專案→Visual C#→WPF 應用程式
→名稱填上ConnectMysql→確定。
加入Mysql參考:
C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies Assemblies資
料夾下有幾個子資料夾:v2.0、v4.0、v4.5
下面這篇有提到v2.0指的是.net 2.0,但上面說最好不要用connector的方式連接mysql,
部屬時可能會產生很多問題。
他推薦使用Visual Studio的nugethttp://geekswithblogs.net/anirugu/archive/2011/04/20/my sql.data.mysqlclient-version-mismatched.aspx
目前還是先用connector方式連接mysql就好,
我會選擇v4.0下的dll檔作為參考,因為我的Visual Studio開新專案預設的.NET Framework 目標為4.0
到方案總管→在參考上按右鍵→選擇加入參考→瀏覽→找到C:\Program Files
(x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies\v4.0\MySql.Data.dll→確定
v4.0資料夾可以看到以下的DLL檔
MySql.Data.dll
MySql.Data.Entity.dll
MySql.Data.Entity.EF6.dll
MySql.Fabric.Plugin.dll
MySql.Web.dll
在MainWindow.xaml.cs下加入using:using MySql.Data.MySqlClient;
到Window_Loaded事件貼上連接資料庫相關內容
private void Window_Loaded(object sender, RoutedEventArgs e)
{
string dbHost = "127.0.0.1";//資料庫位址
string dbUser = "root";//資料庫使用者帳號
string dbPass = "";//資料庫使用者密碼
string dbName = "api";//資料庫名稱
string connStr = "server=" + dbHost + ";uid=" + dbUser + ";pwd=" + dbPass + ";database=" + dbName;
MySqlConnection conn = new MySqlConnection(connStr);
MySqlCommand command = conn.CreateCommand();
conn.Open();
String cmdText = "select * from developer";
MySqlCommand cmd = new MySqlCommand(cmdText, conn);
MySqlDataReader reader = cmd.ExecuteReader(); //execure the reader
while (reader.Read())
{
for (int i = 0; i < 3; i++)//i代表column數量
{
String s = reader.GetString(i);
Console.Write(s + "\t");
}
Console.Write("\n");
}
Console.ReadLine();
conn.Close();
}
程式執行結果,在輸出視窗可看到(developer table有三個欄位,兩列資料):
1 jenny $2a$10$nFcuJ5U4yvUee/5.hL4TUOre79V606fkl8Qcrhp6J21kGiO68oFCm
2 hank $2a$10$.nR2tQIVzSl0wy2sV7J3F.BtfiswH5bk1CJbicoxFVy/pa5gDnalu
直接印出connStr會是以下的樣子
server=127.0.0.1;uid=root;pwd=;database=api
上面這段程式碼,有兩個重要的東西,連接字串與MySqlConnection物件:
在書裡《Visual C# 資料庫程式設計暨進銷存系統實作 2012 /松崗》
連接字串:Data Source=BENNY-VAIO;Initial Catalog=XIN;User ID=sa; Password=sa;
意思為資料來源:BENNY-VAIO、資料庫:XIN、使用者名稱:sa、密碼:sa
很明顯地看到書上與上面程式碼的連接字串有所不同,
書上用Data Source、Initial Catalog來代表連接來源與資料庫名稱,
而網路上找到的則使用Server、Database,
後來一查發現,都可以使用,都為同義字。
在ADO.NET裡,不同的 Data Provider 對應不同的 Connection 物件,
舉幾個例子:
SQL Server .NET Data Provider 對應 SqlConnection 物件
OLE DB .NET Data Provider 對應 OleDbConnection 物件
Open Database Connectivity (ODBC) .NET Data Provider 對應 OdbcConnection 物件
ORACLE .NET Data Provider 對應 OracleConnection 物件
而在我們這個範例中因為使用的是Mysql,所以我們的 Connection 物件為 MySqlConnection。
另外,要完成資料庫連線資源的釋放,必須經過三個步驟:
關閉連接
conn.Close();
釋放記憶體
conn.Dispose();
設成null
conn = null;
參考資料