下載connector
MySQL是微軟的死對頭, 所以C#當然不會那麼好心的直接支援MySQL. 所以為了能在C#中使用MySQL, 就必需到MySQL官網下載驅動程式, 下載完後直接安裝即可. 網址如下
https://dev.mysql.com/downloads/connector/net/
C# 設定
開啟C#專案後, 於專案/加入參考/瀏覽, 然後將下面的MySql.Data.dll加入
C:\Program Files (x86)\MySQL\MySQL Connector Net 6.10.5\Assemblies\v4.5.2\MySql.Data.dll
加入後, 在方案總管就會出現MySql.Data了
C# 程式撰寫
class Program { static void Main(string[] args) { string connStr = "server=localhost;uid=帳號;pwd=密碼;database=資料庫"; MySqlConnection conn = new MySqlConnection(connStr); conn.Open(); string cmdStr="select * from wp_terms"; MySqlCommand cmd = new MySqlCommand(cmdStr, conn); MySqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { for (int i = 0; i < 4; i++) { Console.Write(dr.GetString(i)); } Console.WriteLine(); } dr.Close() } }
MySqlDataReader非常嚴僅, 產生物件後, 一定要Close(), 才可以再次產生新的 dr. 這在ComboBox時若有 SelectionChanged事件時要特別注意. 最好是ComboBox裏的值都設定好後, 才指定要觸發的事件, 不要把事件寫在xaml裏.
cmbCar.SelectionChanged += new SelectionChangedEventHandler(cmbCar_SelectionChanged);
使用 using
使用 using 建立物件,此類別必需是 IDisposable 介面。底下的 conn 物件使用 using 建立,還是需要 conn.Open(),但不用 conn.Close(),因為離開 using區塊後會自動執行 Dispose 方法,而在 Dispose 就會自動 Close 連線。
不過底下是使用 MySqlDataAdapter(),會自動Open, 所以看不到 Open()的指令。
要取得 conn的連線狀況,可以使用 conn.State,此變數為 ConnectionState.Open 或 ConnectionState.Closeed。
new Thread(() => { using (conn = new MySqlConnection(G.connStr)) { string strCmd = "select * from 員工資料"; DataTable dtShow = new DataTable(); try { new MySqlDataAdapter(strCmd, conn).Fill(dtShow); } catch (Exception ex) { MessageBox.Show(ex.Message, "資料庫查詢錯誤"); } } //底下不會執行 if (conn.State==ConnectionState.Open) { conn.Close(); Console.WriteLine("close database"); } }).Start();
常見錯誤
fatal error encountered during command execution
連線字串需加
Allow User Variables=True;
完整字串如下
public static string connStr = string.Format("server={0};uid={1};pwd={2};database={3};convert zero datetime=True;Allow User Variables=True;", domain, dbAccount, dbPassword, dbName);