首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

C# Web 訪問 MySQL 三大方案對比:Connector/NET、Web.config、ODBC 全場景指南

     編輯:更多程式設計知識

ASP.NET 應用連接 MySQL 有多種成熟方案,各有適用場景與優劣。本文從部署模式、代碼侵入性、維護成本三個維度,系統對比三大主流方案並提供生產級代碼模板。

方案對比總覽

維度Connector/NET 直引用Web.config 註冊ODBC 系統數據源ODBC 驅動字符串
部署方式DLL 隨項目部署DLL 放 Bin 目錄需服務器安裝驅動需服務器安裝驅動
代碼侵入性需引用命名空間無代碼變更使用 OdbcConnection使用 OdbcConnection
適用場景新項目、全控制老項目擴展、無法重編譯多數據源統一管理不想配置 DSN 時
連接字符串代碼中硬編碼/配置節點web.config connectionStringsDSN=名稱Driver=...;Server=...;UID=...;PWD=...
權限要求低低高(系統級配置)高

方案一:Connector/NET 程序集直引用(推薦新項目)

步驟

  1. NuGet 安裝:Install-Package MySql.Data 或手動引用 MySql.Data.dll
  2. 代碼中使用:using MySql.Data.MySqlClient;

標準數據訪問模板


string connStr = "Server=172.168.0.234;Database=testss;Uid=root;Pwd=shinevod;";
string sql = "SELECT * FROM sms_outbox";

using (var conn = new MySqlConnection(connStr))
using (var adapter = new MySqlDataAdapter(sql, conn)) {
    var ds = new DataSet();
    adapter.Fill(ds);
    // 處理 ds.Tables[0]
    Response.Write(ds.GetXml());
}

方案二:Web.config 註冊程序集(零代碼侵入擴展老項目)

1. 將 MySql.Data.dll 放入網站 Bin 目錄

2. web.config 註冊


<system.web>
  <compilation debug="true" targetFramework="4.0">
    <assemblies>
      <add assembly="MySql.Data, Version=6.6.4.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D" />
    </assemblies>
  </compilation>
</system.web>

3. aspx/ashx 頁面直接使用完整命名空間


using (var adapter = new MySql.Data.MySqlClient.MySqlDataAdapter(sql, connStr)) { ... }

方案三:ODBC 系統數據源 (DSN)

前置條件

  • 下載安裝 MySQL Connector/ODBC(匹配系統位數:32/64 位)
  • 控制面板 → 管理工具 → ODBC 數據源 → 系統 DSN → 添加

代碼模板


string dsn = "DSN=mysqltest;";
string sql = "SELECT * FROM sms_outbox";

using (var adapter = new OdbcDataAdapter(sql, dsn)) {
    var ds = new DataSet();
    adapter.Fill(ds);
    Response.Write(ds.GetXml());
}

方案四:ODBC 無 DSN 驅動字符串直連


string connStr = "Driver={MySQL ODBC 5.2 Unicode Driver};" +
                 "Server=172.168.0.234;Database=testss;UID=root;PWD=shinevod;";

using (var adapter = new OdbcDataAdapter(sql, connStr)) { ... }

生產環境最佳實踐建議

  1. 連接字符串外部化:全部放入 web.config <connectionStrings>,加密敏感節點
  2. 連接池管理:Connector/NET 默認啟用池化,Pooling=true;Min Pool Size=5;Max Pool Size=100
  3. 參數化查詢:cmd.Parameters.AddWithValue("@id", id) 防注入
  4. 異常處理:捕獲 MySqlException,檢查 Number 錯誤碼(1045 認證失敗、1042 無法連接)
  5. 編碼設置:連接字符串添加 Charset=utf8mb4; 解決 Emoji 存儲
  6. 監控指標:連接獲取耗時、慢查詢日誌、連接池佔用率

避坑指南

現象原因解決
「Unable to connect to any of the specified MySQL hosts」防火牆/bind-address/權限檢查 3306 端口、my.cnf bind-address=0.0.0.0、GRANT 權限
「Authentication plugin 'caching_sha2_password' not supported」MySQL 8.0 默認認證插件舊驅動不支持升級 Connector/NET 8.0+ 或創建用戶指定 mysql_native_password
中文亂碼字符集不匹配連接串 Charset=utf8mb4、表/列 CHARSET=utf8mb4

總結

新項目首選 Connector/NET + 依賴注入 + 配置外部化;老項目無法重編譯時用 Web.config 註冊;異構數據源統一接入考慮 ODBC。核心原則:連接字符串配置化、訪問代碼參數化、異常信息結構化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved