萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

C# 連接 MySQL 兩大主流方案:MySql.Data (Connector/NET) 與 MySqlDriverCS 實戰代碼

方案一:MySql.Data (MySQL Connector/NET) —— 官方標準

準備

  • NuGet:Install-Package MySql.Data 或下載 mysql.data.dll 放入 Bin 目錄。
  • 引用命名空間:using MySql.Data.MySqlClient;

ASP.NET WebForms 完整示例

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<form id="form1" runat="server">
    <asp:Table ID="tblTest" runat="server">
        <asp:TableHeaderRow>
            <asp:TableHeaderCell Text="新聞標題" />
        </asp:TableHeaderRow>
    </asp:Table>
</form>
// Default.aspx.cs
using System.Web.UI.WebControls;
using MySql.Data.MySqlClient;

public partial class _Default : System.Web.UI.Page {
    protected void Page_Load(object sender, EventArgs e) {
        string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
        using (var conn = new MySqlConnection(connStr)) {
            conn.Open();
            string sql = "SELECT name FROM t_document ORDER BY id DESC";
            using (var cmd = new MySqlCommand(sql, conn))
            using (var reader = cmd.ExecuteReader()) {
                while (reader.Read()) {
                    var tr = new TableRow();
                    var tc = new TableCell { Text = reader["name"].ToString() };
                    tr.Cells.Add(tc);
                    tblTest.Rows.Add(tr);
                }
            }
        }
    }
}

連接字符串關鍵參數

Server=localhost;Port=3306;Database=test;Uid=root;Pwd=123456;
Charset=utf8mb4;Pooling=true;Min Pool Size=5;Max Pool Size=100;
SslMode=None;  -- 內網可關閉 SSL 提升性能

方案二:MySqlDriverCS(舊項目維護專用,新項目勿用)

準備

  • 下載 MySqlDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0.exe 安裝。
  • 引用安裝目錄下 MySqlDriverCS.dll。
  • 命名空間:using MySqlDriverCS;

WinForms 數據綁定示例

using MySqlDriverCS;
using System.Data;

public partial class Form1 : Form {
    private void Form1_Load(object sender, EventArgs e) {
        var conn = new MySqlConnection(
            new MySqlConnectionString("127.0.0.1", "dvbbs", "root", "123456").AsString);
        conn.Open();
        new MySqlCommand("SET NAMES gb2312", conn).ExecuteNonQuery();

        string sql = "SELECT title,topicid,boardid,dateandtime,hits FROM dv_topic ORDER BY dateandtime DESC LIMIT 10";
        var da = new MySqlDataAdapter(sql, conn);
        var ds = new DataSet();
        da.Fill(ds, "table1");
        this.dataGrid1.DataSource = ds.Tables["table1"];
        conn.Close();
    }
}

方案選擇建議

  • 新項目 / .NET Core / 現代化:MySqlConnector (NuGet: MySqlConnector) 或官方 MySql.Data。托管、高性能、支持異步、EF Core/Dapper 完美兼容。
  • 老項目維護 (.NET Framework 2.0~4.x):繼續用 MySql.Data 或 MySqlDriverCS,不建議遷移成本過高。
  • 異構數據庫統一訪問:考慮 ODBC/OleDb,但性能損耗大。

官方下載地址

https://dev.mysql.com/downloads/connector/net/ (MySQL Connector/NET)

https://github.com/mysql-net/MySqlConnector (MySqlConnector - 社區高性能版)

copyright © 萬盛學電腦網 all rights reserved