1. 程式人生 > >C#使用ODBCl連線MySql詳細教程

C#使用ODBCl連線MySql詳細教程

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using MySql.Data;
using MySql.Data.MySqlClient;

namespace MySQLTest
{
    class Test
    {
        private MySqlConnection mysqlcon;

        Test()
        {
            const string constr = "server=localhost;User Id=waponx;password=learning;Database=Education";
            mysqlcon = new MySqlConnection(constr);
            //  開啟mysql連線,在使用之前必須要開啟,否則會丟擲異常
            // 在不使用mysql的時候記得關閉
            mysqlcon.Open();

            //  生成一個mysql語句,第一個引數為你的語句,第二個引數為mysql連線
            //  第二個引數可省,預設值為null
            MySqlCommand mysqlcmd_NonQuery = new MySqlCommand("insert into myaccount(name, password, identity) values(\'haha\', \'123\', \'Student\')", mysqlcon);
            //  執行語句
            mysqlcmd_NonQuery.ExecuteNonQuery();

            MySqlCommand mysqlcmd_Query = new MySqlCommand("select * from myaccount", mysqlcon);
            //   如果執行mysql語句會返回資訊,就可以通過MySqlDataReader型別來讀取這些資訊。
            //   比如select語句
            //      ExecuteReader函式返回一個MySqlDataReader物件
            MySqlDataReader dataReader = mysqlcmd_Query.ExecuteReader();

            //  FieldCount屬性,查詢結果的欄位數
            int count = dataReader.FieldCount;
            //  讀取這個結果集合
            //  想要訪問查詢結果,先要執行Read函式
            dataReader.Read();
            string[] title = new string[count];
            for (int i = 0; i < count; ++i)
            {
                //  獲取第i列的標題,通過i指定第幾列
                title[i] = dataReader.GetName(i);
            }
            // Read函式每次從執行的結果中讀取一行
            // 有資料可以讀就返回true
            while (dataReader.Read())
            {
                for (int i = 0; i < dataReader.FieldCount; ++i)
                {
                    //  IsDBNull函式可以判斷讀取到的資料的第i列為不為空
                    //  如果為空就返回true
                    if (!dataReader.IsDBNull(i))
                    {
                        Console.WriteLine("查詢結果的當前當的第{0}列不為空", i);
                        //  GetString函式可以以字串的形式返回讀取到的這一行的第i列的資料
                        //  類似的還有
                        //  dataReader.GetChar(i);
                        /// dataReader.GetInt32(i);等等
                        Console.WriteLine("查詢結果的當前當的第{0}列的內容為:", i, dataReader.GetString(i));
                    }
                    else
                    {
                        Console.WriteLine("查詢結果的當前當的第{0}列為空", i);
                    }

                }
            }
            //  IsClosed可以用來判斷MySqlDataReader是否已經被關閉了
            //  如果沒有關閉要記得關閉,否則不能對這個mysql連線再執行ExecuteReader

            if (!dataReader.IsClosed)
            {
                //  如果在沒有關閉這個MySqlDataReader情況下使用了ExecuteReader和Read,就會丟擲異常
                dataReader.Close();
            }
            //  關閉mysql連線
            CloseMySqlConnect();
        }

        public void CloseMySqlConnect()
        {
            //  關閉mysql
            mysqlcon.Close();
        }
    }
}