MySQL驅動安裝及連線

下載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了

csharp_mysql1

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

發佈留言