RoBoard魔人的機器人日誌

2013/8/9

[教學] 如何使用C#存取MySQL資料庫

今天本魔要講講如何使用C#存取MySQL資料庫

MySQL是一個open source的關聯性資料庫管理系統

可能會有人有疑問說:「資料庫和機器人怎麼有會關聯呢?」

本魔在此告訴你!一定有關聯的!

因為關聯這種東西就是讓我們扯出來的!

在網路上的資料庫可以隨時供電腦做存取

這樣一來,我們就可以很方便的管理一些資料了

也有可能可以把動作資料建立在資料庫上供機器人使用(好像很久以前有人就有給過我這個建議了)

這樣除了較不用擔心資料會隨著機器人損壞

更增加了許多的擴充性




那麼本魔在此就不教學如何安裝MySQL了

各位自己上網Google應該很好找到

那麼就開始我們的教學!

首先各位需要安裝MySQL官方所提供的Connector

安裝好了之後就可以開啟我們的Visual Studio建一個C#的專案囉!

首先要加入參考    [Project] ->[Add Reference]->[瀏覽]

選擇安裝路徑下的MySql.Data.dll



路徑通常在C:\Program Files\MySQL\MySQL Connector Net 6.6.5\Assemblies\v2.0

加入參考了之後會看到方案總管內的Reference有加入了MySql.Data囉


接了我們就可以開始撰寫程式囉

以下給各位新增、刪除、修改、查詢的範例

其實相當簡單

基本上就是與MySQL一樣   丟一串指令給他   他會回傳一些資料給你

首先假設我們的資料表的內容是這樣子的而資料表名稱為member


那我們先來新增10筆會員資料


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
namespace MySQLtest
{
    class Program
    {
        static void Main(string[] args)
        {
            string dbHost = "";//資料庫位址
            string dbUser = "";//資料庫使用者帳號
            string dbPass = "";//資料庫使用者密碼
            string dbName = "";//資料庫名稱

            string connStr = "server=" + dbHost + ";uid=" + dbUser + ";pwd=" + dbPass + ";database=" + dbName;
            MySqlConnection conn = new MySqlConnection(connStr);
            MySqlCommand command = conn.CreateCommand();
            conn.Open();

            String account;
            String password;
            int level;
            for(int i = 0; i < 10; i++){
                account = "account" + i.ToString();
                password = "password" + i.ToString();
                level = i * 10;
                command.CommandText = "Insert into member(account,password,level) values('"+ account +"','"+ password +"',"+ level +")";
                command.ExecuteNonQuery();
            }
            Console.ReadLine();
            conn.Close();
        }
    }
}


這樣執行後我們就可以看到資料表內增加了十筆資料囉
接著是刪除

假如我想刪除id為15的用戶

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
namespace MySQLtest
{
    class Program
    {
        static void Main(string[] args)
        {            string dbHost = "";//資料庫位址
            string dbUser = "";//資料庫使用者帳號
            string dbPass = "";//資料庫使用者密碼
            string dbName = "";//資料庫名稱

            string connStr = "server=" + dbHost + ";uid=" + dbUser + ";pwd=" + dbPass + ";database=" + dbName;
            MySqlConnection conn = new MySqlConnection(connStr);
            MySqlCommand command = conn.CreateCommand();
            conn.Open();


            command.CommandText = "Delete FROM member WHERE id=15";
            int n  = command.ExecuteNonQuery();

            Console.WriteLine("共刪除 {0} 筆資料", n);
            Console.ReadLine();
            conn.Close();
        }
    }
}



那麼執行後就可以發現id為15的資料不見囉

接著是修改

這裡把account6的password改為1234

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
namespace MySQLtest
{
    class Program
    {
        static void Main(string[] args)
        {            string dbHost = "";//資料庫位址
            string dbUser = "";//資料庫使用者帳號
            string dbPass = "";//資料庫使用者密碼
            string dbName = "";//資料庫名稱
            string connStr = "server=" + dbHost + ";uid=" + dbUser + ";pwd=" + dbPass + ";database=" + dbName;
            MySqlConnection conn = new MySqlConnection(connStr);
            MySqlCommand command = conn.CreateCommand();
            conn.Open();


            command.CommandText = "Update member SET password='1234' WHERE account='account6'";
            command.ExecuteNonQuery();


            Console.ReadLine();
            conn.Close();
        }
    }
}



再來看看資料表   沒錯   正確的改過去了


最後就是查詢啦

那我們來查詢看看level小於50的所有用戶

然後顯示在電腦上吧

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
namespace MySQLtest
{
    class Program
    {
        static void Main(string[] args)
        {   string dbHost = "";//資料庫位址
            string dbUser = "";//資料庫使用者帳號
            string dbPass = "";//資料庫使用者密碼
            string dbName = "";//資料庫名稱
            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 member WHERE level < 50";
            MySqlCommand cmd = new MySqlCommand(cmdText, conn);
            MySqlDataReader reader = cmd.ExecuteReader(); //execure the reader
            while (reader.Read())
            {
                for (int i = 0; i < 4; i++)
                {
                    String s = reader.GetString(i);
                    Console.Write(s + "\t");
                }
                Console.Write("\n");
            }


            Console.ReadLine();
            conn.Close();
        }
    }
}





最後結果是

正確!
Share:
技術提供:Blogger.

追蹤者