视频一区视频二区国产精品_欧美日韩成人在线观看_中文在线一区二区三区_天堂色在线视频_极品少妇一区二区三区_中文字幕亚洲欧美_永久免费的av网站_涩涩视频在线观看下载_先锋影音国产精品_午夜精品一区二区三区电影天堂

當前位置 主頁 > 技術大全 >

    從入門到精通:C 與MySQL交互的完整代碼示例與常見錯誤解決方案

    欄目:技術大全 時間:2025-10-16 22:16

    在 C# 中連接 MySQL 數據庫是一項非常常見的任務。下面我將為您提供一個從基礎到進階的完整指南,包括環境配置、代碼實現、最佳實踐和常見問題處理。

    一、 選擇連接器(驅動)

    在 C# (.NET) 中連接 MySQL,官方推薦使用 **MySQL Connector/NET**,這是一個完全托管的 ADO.NET 驅動程序。現在它主要通過 **NuGet** 包進行分發,包名稱為:

    * **`MySql.Data`** (官方驅動)

    #安裝 NuGet 包

    在您的 C# 項目(如 Console App, ASP.NET Core 等)中,通過以下方式安裝:

    1. **Visual Studio**:右鍵點擊項目 -> “管理 NuGet 程序包” -> 搜索 “`MySql.Data`” -> 安裝。

    2. **.NET CLI**:在終端中運行以下命令:

    ```bash

    dotnet add package MySql.Data

    ```

    二、 基礎連接代碼(ADO.NET 方式)

    這是最直接、最可控的方式,類似于連接 SQL Server 的方式。

    #1. 引入必要的命名空間

    ```csharp

    using MySql.Data.MySqlClient; // 核心命名空間

    using System.Data; // 可選,用于 DataTable 等類

    ```

    #2. 構建連接字符串(Connection String)

    連接字符串包含連接到數據庫所需的所有信息。以下是關鍵參數:

    | 參數 | 描述 | 示例 |

    | :--- | :--- | :--- |

    | `Server` | MySQL 服務器地址 | `localhost`, `127.0.0.1`, `example.com` |

    | `Port` | 端口號(可選,默認 3306) | `3306` |

    | `Database` | 要連接的數據庫名稱 | `mydatabase` |

    | `Uid` | 用戶名 | `root` |

    | `Pwd` | 密碼 | `your_password` |

    | `Charset` | 字符集(**強烈建議設置**) | `utf8mb4` (支持表情符號) |

    **示例連接字符串:**

    ```csharp

    string connectionString = "Server=localhost;Port=3306;Database=mydatabase;Uid=root;Pwd=myPassword;Charset=utf8mb4;";

    ```

    **重要提示:** 永遠不要將連接字符串硬編碼在代碼中!應將其存儲在配置文件中,如 `appsettings.json` (ASP.NET Core) 或 `App.config`/`Web.config` (傳統 .NET Framework)。

    #3. 完整的連接與查詢示例

    以下是一個控制臺應用程序的完整示例,演示了如何建立連接、執行查詢并讀取數據。

    ```csharp

    using System;

    using MySql.Data.MySqlClient;

    namespace MySqlConnectionExample

    {

    class Program

    {

    static void Main(string[] args)

    {

    // 1. 定義連接字符串

    string connectionString = "server=localhost;user=root;password=123456;database=testdb;charset=utf8mb4;";

    // 2. 創建 MySqlConnection 對象

    using (MySqlConnection connection = new MySqlConnection(connectionString))

    {

    try

    {

    // 3. 打開數據庫連接

    connection.Open();

    Console.WriteLine("Connection opened successfully.");

    // 4. 編寫 SQL 查詢

    string sql = "SELECT id, name, email FROM users WHERE id > @id"; // 使用參數化查詢防止SQL注入

    // 5. 創建 Command 對象

    using (MySqlCommand command = new MySqlCommand(sql, connection))

    {

    // 6. 添加參數

    command.Parameters.AddWithValue("@id", 0);

    // 7. 執行查詢,獲取 MySqlDataReader

    using (MySqlDataReader reader = command.ExecuteReader())

    {

    // 8. 檢查是否有數據返回

    if (reader.HasRows)

    {

    // 9. 循環讀取每一行數據

    while (reader.Read())

    {

    // 10. 通過列名或索引獲取數據

    int id = reader.GetInt32("id");

    string name = reader.GetString("name");

    string email = reader.IsDBNull(reader.GetOrdinal("email")) ? null : reader.GetString("email"); // 安全處理NULL值

    Console.WriteLine($"ID: {id}, Name: {name}, Email: {email}");

    }

    }

    else

    {

    Console.WriteLine("No records found.");

    }

    // 11. Reader 會在 using 塊結束時自動關閉

    }

    }

    }

    catch (MySqlException ex)

    {

    // 處理 MySQL 特定的異常

    Console.WriteLine($"MySQL Error {ex.Number}: {ex.Message}");

    }

    catch (Exception ex)

    {

    // 處理其他異常

    Console.WriteLine($"General error: {ex.Message}");

    }

    // 12. Connection 會在 using 塊結束時自動關閉和釋放

    }

    Console.ReadLine();

    }

    }

    }

    ```

    三、 在 ASP.NET Core 中的最佳實踐

    在現代 ASP.NET Core 應用程序中,我們使用依賴注入 (Dependency Injection) 來管理數據庫連接,這是更優雅和高效的方式。

    #1. 在 `appsettings.json` 中配置連接字符串

    ```json

    {

    "ConnectionStrings": {

    "DefaultConnection": "server=localhost;port=3306;database=myappdb;user=myappuser;password=MyStrongPassword!;charset=utf8mb4;"

    },

    // ... other settings

    }

    ```

    #2. 在 `Program.cs` 中注冊 MySQL 服務

    ```csharp

    using MySql.Data.MySqlClient;

    using System.Data;

    var builder = WebApplication.CreateBuilder(args);

    // 添加服務到容器

    builder.Services.AddControllers();

    // 注冊 MySqlConnection,將其作為瞬態(Transient)服務

    // 每次請求都會創建一個新的連接實例,ADO.NET 的連接池會管理底層連接的效率

    builder.Services.AddTransient<IDbConnection>((sp) =>

    {

    var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");

    return new MySqlConnection(connectionString);

    });

    var app = builder.Build();

    // ... 后續中間件配置

    ```

    #3. 在控制器 (Controller) 或服務層中使用

    ```csharp

    [ApiController]

    [Route("api/[controller]")]

    public class UsersController : ControllerBase

    {

    private readonly IDbConnection _db;

    // 通過構造函數注入 IDbConnection

    public UsersController(IDbConnection db)

    {

    _db = db;

    }

    [HttpGet]

    public async Task<IActionResult> GetUsers()

    {

    var users = new List<User>();

    // 使用 Dapper 簡化數據操作(推薦)

    // users = await _db.QueryAsync<User>("SELECT * FROM Users");

    // 或者使用原生 ADO.NET

    await _db.OpenAsync();

    using (var command = new MySqlCommand("SELECT * FROM Users", (MySqlConnection)_db))

    {

    using (var reader = await command.ExecuteReaderAsync())

    {

    while (await reader.ReadAsync())

    {

    users.Add(new User

    {

    Id = reader.GetInt32("Id"),

    Name = reader.GetString("Name")

    });

    }

    }

    }

    return Ok(users);

    }

    }

    ```

    四、 關鍵注意事項與最佳實踐

    1. **連接池 (Connection Pooling)**:

    * `MySql.Data` 默認啟用了連接池。這意味著當你創建和關閉 `MySqlConnection` 對象時,底層物理連接并不會立即關閉,而是被放入池中備用,從而大幅提升性能。

    * **務必使用 `using` 語句**或在 ASP.NET Core 中通過依賴注入來管理連接,以確保連接總是被正確關閉并返回到池中。避免手動調用 `.Open()` 而不調用 `.Close()`。

    2. **參數化查詢**:

    * **永遠不要**使用字符串拼接來構造 SQL 查詢語句,這會導致嚴重的 **SQL 注入漏洞**。

    * **始終**像示例中那樣使用 `MySqlParameter` 或 `Parameters.AddWithValue()`。

    3. **異步編程**:

    * 對于 Web 應用程序,使用異步方法(`OpenAsync()`, `ExecuteReaderAsync()`, `ReadAsync()`)可以避免阻塞線程,提高應用程序的并發能力和可擴展性。

    4. **錯誤處理**:

    * 使用 `try-catch` 塊來捕獲 `MySqlException`,它可以提供具體的錯誤編號(`ex.Number`),便于排查身份驗證、服務器連接等特定問題。

    5. **使用 ORM(對象關系映射器)**:

    * 對于復雜的應用程序,考慮使用像 **Dapper**(輕量、高性能)或 **Entity Framework Core**(功能全面、官方支持)這樣的 ORM。它們可以簡化數據訪問代碼。

    * EF Core 同樣可以通過 `Pomelo.EntityFrameworkCore.MySql` 提供程序來支持 MySQL。

    總結

    在 C# 中連接 MySQL 的步驟可以概括為:

    1. **安裝** `MySql.Data` NuGet 包。

    2. **配置**安全的連接字符串(存儲在配置文件中)。

    3. **使用 `using` 語句**創建和銷毀 `MySqlConnection` 對象以利用連接池。

    4. **使用 `MySqlCommand` 和 `MySqlParameter`** 執行參數化查詢。

    5. **在 ASP.NET Core 中**,通過依賴注入在 `Program.cs` 中注冊 `IDbConnection`,并在控制器中獲取使用。

    遵循這些步驟和最佳實踐,您就可以在 C# 應用程序中高效、安全地與 MySQL 數據庫進行交互。

    另外搭配便捷的MYSQL備份工具,可定時備份、異地備份,MYSQL導出導入。可本地連接LINUX里的MYSQL,簡單便捷。可以大大地提高工作效率喔。


1分鐘搞定MySQL部署!Docker最強實操指南,含所有常用命令和配置
忘記MySQL密碼怎么辦?別慌!用這一招跳過驗證,輕松重置管理員權限
MySQL自增主鍵用完怎么辦?從原理到實戰,全面破解開發中的高頻難題
MySQL權限混亂?這幾個命令讓你徹底理清用戶清單與權限歸屬
你的數據庫安全嗎?讀懂MySQL這幾種日志,關鍵時刻能「救你一命」
MySQL性能上不去?八成是這里沒配好!手把手教你搞定my.cnf核心配置
修改MySQL字段長度別亂來!這3個核心要點和1個致命陷阱,新手必看
MySQL單表卡爆怎么辦?從策略到實戰,一文掌握「分表」救命技巧
你的MySQL數據庫為什么總是又慢又卡?掌握這五大優化法則,查詢速度快十倍!(上篇)
你的MySQL數據庫為什么總是又慢又卡?掌握這五大優化法則,查詢速度快十倍!(下篇)
亚洲精品va在线观看| 中文字幕日韩免费视频| wwwxxx亚洲| 久久精品影视| 国产欧美日韩伦理| 成人毛片免费在线观看| 亚洲永久精品大片| 在线小视频你懂的| 偷窥自拍亚洲色图精选| 91欧美激情另类亚洲| 天天色av.com| 亚洲不卡一区二区三区| 欧美亚洲色综久久精品国产| 亚洲国产欧美日韩在线观看第一区 | 一个人在线视频免费观看www| 国产亚洲欧美日韩俺去了| 57pao国产成永久免费视频| 欧美xxxx做受欧美护士| 欧美第一淫aaasss性| 四虎.com| 国产亚洲一区二区在线观看| 亚洲午夜精品在线观看| 国产美女亚洲精品7777| 日本久久久久久久久久久| 伊人无码高清| 亚洲在线观看免费视频| 精品国产aaa| 欧美一区二区性| 九九热久久66| 欧美色18zzzzxxxxx| 欧美一区二区三区色| 午夜久久久久久久久久影院| 三级久久三级久久久| 国产亚洲黄色片| а√在线中文在线新版| 欧美成人亚洲成人| 国产又粗又大又长| 亚洲激情第一区| 女人裸体性做爰全过| 日韩欧美大片| 日韩欧美精品一区二区三区经典| 国产精品二线| 国产视频欧美视频| 国产亚洲精品久久久久久无几年桃 | 免播放器亚洲一区| 欧美精品色婷婷五月综合| 欧美大片免费高清观看| 欧美亚洲国产日韩2020| 九九九热视频| 日本韩国欧美国产| 中文字幕在线观看视频网站| 日本vs亚洲vs韩国一区三区二区 | 91极品视频在线观看| 亚洲成人精品综合在线| 国产精品免费在线免费| 国产网站免费观看| 91精品国产综合久久婷婷香蕉| 精品国产www| 国产精一品亚洲二区在线视频| 国产福利精品一区二区三区| 78精品国产综合久久香蕉| 欧美最猛性xxxxx免费| 夜夜骑天天操| 91麻豆精品国产自产在线| 一级成人免费视频| 波多野洁衣一区| 欧美无人区码suv| 久久一区二区中文字幕| 一区二区在线中文字幕电影视频| 免费毛片在线看片免费丝瓜视频| 久久久人成影片一区二区三区观看 | yiren22综合网成人| 在线免费看av不卡| 国产精品久久久久久久牛牛| 五月婷婷久久综合| 69国产精品视频免费观看| 国产综合色产在线精品| 丰满人妻一区二区三区免费视频棣| 蜜乳av综合| 亚洲综合第一| 欧美办公室脚交xxxx| 国产精品福利在线观看| 成人动漫av| 亚洲欧美激情在线视频| 欧美sm视频| 欧美性猛交xxxx久久久| 国产情侣小视频| av在线免费不卡| 国产伦精品一区二区三区视频女| 亚洲五月婷婷| 男女爽爽爽视频| 超碰在线免费公开| 欧美激情精品久久久久久黑人| 可以看av的网址| 精品久久一区二区| 先锋资源中文字幕| 婷婷国产在线综合| 亚洲天堂网在线观看视频| 久久夜色精品国产噜噜av| 少妇视频一区二区| 日韩精品1区2区3区| 亚洲高清在线不卡| 久久综合99| 九色自拍视频在线观看| 亚洲网址在线观看| 亚洲v国产v在线观看| 欧美中文字幕精在线不卡| 亚洲自拍偷拍福利| 成人免费高清| 国产99视频精品免视看7| 在线观看你懂得| 久久精品久久久久电影| 黄色成人羞羞视频| 国产视频丨精品|在线观看| 一级美女在线| 欧美成人艳星乳罩| 久久久久久国产视频| 欧美午夜影院一区| 黄色一二三区| 日本黄色一区二区| 深爱五月激情五月| 天天操天天综合网| 国内精品国产成人国产三级| 亚洲女同女同女同女同女同69| 午夜久久久久久久久久影院| 国产欧美日韩在线视频| 日韩 欧美 精品| 91在线视频在线| 久久午夜鲁丝片午夜精品| 国产激情一区二区三区| 亚洲精品电影院| 国产在线精品一区二区 | 福利微拍一区二区| 亚洲国产剧情在线观看| 亚洲成人资源网| 精品人妻一区二区三区麻豆91| 亚洲妇女屁股眼交7| 东京热无码av男人的天堂| 丝袜亚洲另类欧美| 性少妇bbw张开| 免费成人在线网站| 天天干天天舔天天操| 美女免费视频一区二区| 中文字幕av久久爽一区| 久久精品国产久精国产| 日本精品久久久久中文| 国产福利精品一区| 久草成人在线视频| 91影院在线免费观看| 天堂网一区二区三区| 国产亚洲欧美一级| 男人天堂视频网| 自拍偷自拍亚洲精品播放| 一级日韩一级欧美| 亚洲国产视频直播| 蜜桃视频污在线观看| 91黄色在线观看| 一区二区三区精品牛牛| 欧美一区二区免费观在线| www.91视频| 日韩精品在线观看视频| 成人黄色免费电影| 久久久99久久精品女同性| 黄网站app在线观看大全免费视频| 欧美第一淫aaasss性| 韩国三级在线观看久| 国产精品久久久久9999| 欧美野外wwwxxx| 极品校花啪啪激情久久| 欧美另类激情| 日本a在线天堂| 国产欧美高清视频在线| 亚洲欧美自拍另类日韩| 在线一区视频| 欧美激情亚洲色图| 成人激情av网| 91在线视频免费播放| 亚洲国产精品人人做人人爽| 二区三区不卡不卡视频| 日韩免费看网站| 天天噜夜夜操| 欧美激情欧美激情在线五月| av在线电影观看| 91视频网页| 在线观看欧美| 亚洲 自拍 另类小说综合图区| 五月激情综合| 漂亮人妻被黑人久久精品| 精品视频亚洲| 99日在线视频| 免费人成网站在线观看欧美高清| 日韩视频中文字幕在线观看| 中文一区二区完整视频在线观看| 国产黄色片免费观看| 欧美日本一区二区在线观看| 九九在线免费视频| 欧美噜噜久久久xxx| 日本www在线| 久草热久草热线频97精品| 一区二区三区四区高清视频| 美女福利视频在线| 99综合视频| 婷婷久久综合网| 日韩一区在线播放| 国产又爽又黄网站亚洲视频123| 日韩精品最新网址| 污视频网站免费看| 国产精品久久久久久久久粉嫩av| 欧美成人黑人| 欧美中日韩在线| 欧美日本一区二区视频在线观看| 四虎永久免费在线观看| 久久久三级国产网站| 亚洲精选一区二区三区| 精品少妇一区二区三区免费观看| 成视频免费在线看| 国产精品久久久久久久久久东京| 欧美大电影免费观看| 成年人看的毛片| 99在线精品免费视频九九视| 加勒比婷婷色综合久久| 一区二区三区在线免费观看| 欧美xxxxx18| 精品国产一区二区三区久久久 | 欧美新色视频| 国产91视觉| 欧亚精品一区| fc2成人免费视频| 99久久久久久| 国产18精品乱码免费看| 日韩av综合网站| 精品成人一区二区三区免费视频| 国产一区在线观| 久久不见久久见免费视频7| 黄色片视频免费观看| 久久久国产精华| 亚洲综合在线免费| 尤物九九久久国产精品的分类| 69久久夜色| 日本在线观看一区| 久久久久亚洲| 国产一二三四在线视频| 日韩电影在线观看电影| 波多野结衣不卡| 91精品国产综合久久小美女| 最新亚洲人成网站在线观看| 国产精品加勒比| 精品亚洲成人| 538精品视频| 亚洲综合一二三区| 六月天色婷婷| 国产精品白嫩美女在线观看| 国产一区二区三区亚洲综合| 奇米777在线| 91污片在线观看| 俄罗斯男人又粗又大| 久久精品国产91精品亚洲| ****av在线网毛片| 精品中文字幕av| 狠狠色丁香婷综合久久| av无码精品一区二区三区宅噜噜| 亚洲精品久久在线| 麻豆91在线| 国产亚洲黄色片| 美女免费视频一区二区| 国产区精品在线| 亚洲无限av看| 丁香花在线电影小说观看| 黄色国产一级视频| 精品无码三级在线观看视频 | 亚洲免费成人av在线| 在线观看国产精品一区| 亚洲一级二级三级| 亚洲jjzzjjzz在线观看| 99porn视频在线| 欧美偷拍自拍| 欧美精品一区二区成人| 欧美色图天堂网| 一菊综合网成人综合网| 91嫩草免费看| 色综合久久网| 国产精品成人国产乱| 91精品婷婷国产综合久久性色| 欧美黄色小说| 色撸撸在线观看| 日本少妇一区二区| 国产ts变态重口人妖hd| 中文字幕亚洲综合| 户外露出一区二区三区| 国产精品999.| 亚洲欧洲日韩综合一区二区| 黑料不打烊so导航| 91精品天堂| 亚洲精品在线观看91| 中文字幕精品三级久久久 | 澳门永久av免费网站| 97激碰免费视频| 999国产精品一区| 美国美女黄色片| 成人美女视频在线观看18| 久草在线视频网| 日本久久久久久久| 亚洲制服欧美另类| 欧美色图一区二区| 日韩欧美一区电影| 中文字幕在线播放网址| 免费日韩视频在线观看| 久久影院午夜论| 免费看的www视频网站视频| 亚洲xxxx做受欧美| 牛夜精品久久久久久久99黑人| www.久久久久久久| 亚洲系列中文字幕| 国精产品一区二区三区有限公司| fc2成人免费视频| 天天射综合影视| 青青久草在线| 国产人妻777人伦精品hd| 99久久精品免费观看| 污的视频网站| 国产精品国色综合久久| 国产欧美不卡| 欧美综合视频在线| 欧美怡春院一区二区三区| 九九久久婷婷| 欧美一级片免费在线观看| 亚洲欧美另类人妖| 国产精品第一| 永久免费毛片在线观看| 欧美精品少妇一区二区三区| 中日韩高清电影网| 亚洲在线观看网站| 亚洲午夜精品一区二区三区他趣| 在线播放你懂得| 日韩精品 欧美| 国产喷白浆一区二区三区| 污网站在线观看免费| 亚洲视频精品一区| 国产精品夜夜嗨| 7799国产精品久久久久99 | 亚洲精品2区| 国产剧情久久久| 久久久亚洲国产| 视频国产一区| 国产一区免费看| 欧美日韩aaaa| 夜夜躁狠狠躁日日躁2021日韩| 色网站在线播放| 日韩中文娱乐网| 精品视频高潮| 国产超碰人人爽人人做人人爱| 综合av色偷偷网| 高清精品视频| 99热国产在线观看| 日韩中文视频免费在线观看| 国产精品18hdxxxⅹ在线| 日本三级午夜理伦三级三| 尤物yw午夜国产精品视频明星| 亚洲精品黑牛一区二区三区| 久久久无码精品亚洲国产| 国产亚洲视频在线观看| 亚洲天堂中文字幕在线观看 | 日韩免费成人网| 婷婷激情一区| 一区二区三区在线播放视频| 亚洲国产精品人人爽夜夜爽| 视频在线不卡| 可以在线看的黄色网址| 亚洲人成精品久久久久久| 欧美日韩国产综合视频 | 久久精品人人爽人人爽| 污污免费网站| 六月丁香激情网| 亚洲精品国产无天堂网2021| 福利视频在线播放| 五月天视频在线观看| 色88888久久久久久影院野外| 美女日批视频在线观看| 国产亚洲色婷婷久久99精品91| 欧美一区二区三区小说| 亚洲成人不卡| 东方av正在进入| 最新日韩中文字幕| 亚洲深夜福利在线观看| 一级全黄裸体免费视频| 国产精品v片在线观看不卡| 一本色道久久综合一区| 欧美成人观看免费全部完小说| 免费国产一区| 9l国产精品久久久久麻豆| 日本成本人片免费观看| 欧美激情成人网| 欧美性开放视频| 免费在线小视频| 午夜爽爽爽男女免费观看| 中文字幕av一区| 国产乱码精品一区二区亚洲| av在线亚洲天堂| 亚洲影院色在线观看免费| 精一区二区三区|