今天本魔要講講如何使用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筆會員資料
這樣執行後我們就可以看到資料表內增加了十筆資料囉
接著是刪除
假如我想刪除id為15的用戶
那麼執行後就可以發現id為15的資料不見囉
接著是修改
這裡把account6的password改為1234
再來看看資料表 沒錯 正確的改過去了
最後就是查詢啦
那我們來查詢看看level小於50的所有用戶
然後顯示在電腦上吧
最後結果是
正確!
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(); } } }
最後結果是
正確!