【C#】使用MySql.Data.dll連接MySQL數據庫


准備工作

在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;
        }

 

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM