准備工作
在Visual Studio中新建一個C#的控制台應用程序。
確保后台已經啟用了MySQL57服務。

在MySQL的安裝路徑下找到DLL,默認位置是 C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5\MySql.Data.dll 。
更多寫代碼連接MySQL的方法(通過MySQLConnector連接器),參考文檔 C:\Program Files (x86)\MySQL\Connector.NET 6.9\Documentation\ConnectorNET.chm 。在文檔的Users Guide-Programming中有代碼案例。
把MySql.Data.dll引入項目中。v4.5表示.NetFramework框架的版本號,一定要保證使用的DLL與項目的.NetFramework版本一致,否則運行時報錯找不到DLL,報錯如下:
1>F:\Learning\CSharpConnectMySQL\CSharpConnectMySQL\Program.cs(1,7,1,12): error CS0246: The type or namespace name 'MySql' could not be found (are you missing a using directive or an assembly reference?)
測試增刪改查
using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CSharpConnectMySQL { class Program { static void Main(string[] args) { // 服務器地址;端口號;數據庫;用戶名;密碼 string connectStr = "server=127.0.0.1;port=3306;database=mygamedb;user=root;password=root"; // 用戶名和密碼在MySQL定義的 // 創建連接 MySqlConnection conn = new MySqlConnection(connectStr); try { // 打開連接 conn.Open(); Console.WriteLine("已經建立連接"); //Query(conn); // 測試查詢 //Insert(conn); // 測試插入 //Update(conn); // 測試更新 //Delete(conn); // 測試刪除 } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { // 關閉連接 conn.Close(); Console.WriteLine("數據庫已關閉"); } Console.ReadKey(); } /// <summary> /// 查詢 /// </summary> /// <param name="conn"></param> private static void Query(MySqlConnection conn) { // 創建命令 string sql = "select * from users"; MySqlCommand cmd = new MySqlCommand(sql, conn); // 讀取數據 MySqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) // true表示能讀取該行數據 {
// 方式一:訪問數組
Console.WriteLine(reader[0].ToString() + reader[1].ToString()); // reader[0]是讀出來的第一列屬性
// 方式二:根據列數
Console.WriteLine(reader.GetInt32(0));
// 方式三:根據列名
Console.WriteLine(reader.GetInt32("user_id")); } } /// <summary> /// 插入,增加數據 /// </summary> /// <param name="conn"></param> private static void Insert(MySqlConnection conn) { // 創建命令 string sql = "insert into user(user_name, user_pwd) values('asdAa','2345')"; MySqlCommand cmd = new MySqlCommand(sql, conn); // 添加一條記錄 int result = cmd.ExecuteNonQuery(); Console.WriteLine("數據庫中受影響的行數 = " + result); } /// <summary> /// 更新,改數據 /// </summary> /// <param name="conn"></param> private static void Update(MySqlConnection conn) { // 創建命令 string sql = "update user set user_name = 'newName', user_pwd = '66777' where user_id = '3'"; MySqlCommand cmd = new MySqlCommand(sql, conn); // 更新記錄 int result = cmd.ExecuteNonQuery(); Console.WriteLine("數據庫中受影響的行數 = " + result); } /// <summary> /// 刪除數據 /// </summary> /// <param name="conn"></param> private static void Delete(MySqlConnection conn) { // 創建命令 string sql = "delete from user where user_id = '4'"; MySqlCommand cmd = new MySqlCommand(sql, conn); // 刪除記錄 int result = cmd.ExecuteNonQuery(); Console.WriteLine("數據庫中受影響的行數 = " + result); } } }
傳參拼接SQL語句
/// <summary> /// 驗證用戶名和密碼 /// </summary> /// <param name="conn"></param> /// <param name="userName"></param> /// <param name="password"></param> /// <returns></returns> private static bool Verify(MySqlConnection conn, string userName, string password) { // 方式一:組拼sql //string sql = "select * from user where user_name = '" + userName + "' and user_pwd = '" + password + "'"; //MySqlCommand cmd = new MySqlCommand(sql, conn); // 方式二:參數標記 string sql = "select * from user where user_name = @p1 and user_pwd = @p2"; MySqlCommand cmd = new MySqlCommand(sql, conn); cmd.Parameters.AddWithValue("p1", userName); // 這里會根據輸入的類型,自動判斷要不要加單引號'' cmd.Parameters.AddWithValue("p2", password); MySqlDataReader reader = cmd.ExecuteReader(); if (reader.Read()) // 要么查出一條數據,要么0條。 { return true; } return false; }
