詳解:如何在.NET中訪問MySQL資料庫?

2021-01-12 站長之家

如果你不是只在大集團公司工作過的話,你一定會有機會接觸到MySQL,雖然它並不支持事務處理,存儲過程,但是它提供的功能一定能滿足你的大部分需求,另外,簡潔的MySQL也有一些它獨到的優勢,在有些時候,它的速度甚至超過大型資料庫。

那麼如何在.NET中訪問MySQL資料庫呢?也許很多人馬上會說:用OLEDB嘛,但是事實上採用.NET OleDb Data Provider並不能訪問MySQL,如果你使用的話,系統會提示你:「Net Data OLE DB 提供程序 (System.Data.Odbc) 不支持 MSDASQL 提供程序(用於 Odbc 驅動程序的 Microsoft OLE DB 提供程序)。」,是什麼原因我並不知道,按照MySQLDriverCS的作者的說法就是它被「abandoned by the owner」,呵呵,興許還有些故事。

幸好,我們還有其它的選擇,這裡就要介紹兩種訪問MySQL資料庫的辦法。

使用ODBC.NET

ODBC.NET(全稱ODBC .NET Data Provider)是一個免費的.NET Framework附加組件,需要到微軟公司的網站上去下載,下載地址為:https://download.microsoft.com/download/dasdk/Install/1.0.4030.0/W98NT42KMeXP/EN-US/odbc_net.msi,它需要系統已經安裝MDAC 2.7或者更高版本。另外,還需要安裝MySQL的ODBC驅動程序,下載地址為:https://www.mysql.com/downloads/api-myodbc-2.50.html,還需要在"ODBC數據源管理器"中配置一下DSN,如下圖所示:

在對象的設計上,ODBC.NET也跟OLEDB,SQL等一樣,分別為OdbcConnection, OdbcCommand, OdbcDataAdapter,OdbcDataReader,用法也完全一樣,如果你希望用ODBC .NET來代替以前的OleDb .NET Data Provider,事實上完全可以通過查找替換的辦法來修改你的程序。

以下是一段代碼示例:

  try

  {

  string constr = "DSN=MySQL;" + "UID=;" +"PWD="; ;

  conn = new OdbcConnection(constr);

  conn.Open();

  string query = "insert into test.dbtable values10,'disksidkfsdi', 'asdfaf', 'adsfasdf')";

  string tmp = null;

  OdbcCommand cmd = new OdbcCommand(query, conn);

  for(int i = 0; i < 100000; i++)

  {

  cmd.ExecuteNonQuery();

  }

  cmd.Dispose();

  conn.Close();

  query = "select * from test.dbtable";

  OdbcCommand cmd2 = newOdbcCommand(query, conn);

  conn.Open();

  OdbcDataReader reader = cmd2.ExecuteReader();

  while(reader.Read())

  {

  tmp = reader[0].ToString();

  tmp = reader[1].ToString();

  tmp = reader[2].ToString();

  tmp = reader[3].ToString();

  }

  conn.Close();

  query = "delete from test.dbtable";

  OdbcCommand cmd3 = newOdbcCommand(query, conn);

  conn.Open();

  cmd3.ExecuteNonQuery();

  }

  catch(Exception ex)

  {

  MessageBox.Show(ex.Message);

  }

  finally

  {

  conn.Close();

  }
只要是用C#寫過資料庫應用的人一定能知道,上面的代碼執行了十萬次插入數據和讀取數據,最後將數據記錄全部刪除的操作。

使用MySQLDriverCS

可能大部分的人都不知道這個東西,MySQLDriverCS是MySQL資料庫的一個免費開源的.NET驅動程序。和Sql .NET Data Provider是為Sql Server一樣,它是專門為MySQL設計的,可以叫做MySQL .NET Data Provider。使用他不需要額外的去設置ODBC數據源,基本上只要能連接到MySQL就能通過MySQLDriverCS來訪問。

MySQLDriverCS是SourceForge.NET上的一個項目,不過不知道什麼原因,這個網站在國內訪問不到。

下面是使用MySQLDriverCS的代碼示例:

和上面的那段代碼幾乎一模一樣,所不同的是Odbc變成了MySQL,另外,需要注意的一點是Command的ExecuteReader方法在MySQLDriverCS中變成了ExecuteReaderEx,還有些細微的差別請參考附帶的文檔詳細的介紹。

性能測試

有些讀者其實已經看出來我以上寫的那段代碼的用意,對了,其實目的就是用來進行性能測試的。以上兩段代碼的執行時間分別是:ODBC.NET為24秒左右,MySQLDriverCS為17秒左右。結果並不出人意外,作為MySQL的專用數據驅動程序,MySQLDriverCS的速度大大快於ODBC.NET是在情理之中的。

總結

本文介紹了兩種MySQL資料庫訪問的方法,同時對它們的性能做了一個簡單的測試,希望能為各位讀者在採用MySQL資料庫開發.NET應用的時候提供一個有價值的參考。

相關焦點

  • 實例講解:.NET如何訪問MySQL資料庫
    .NET的資料庫天然支持MSSQLServer,但是並非其他資料庫不支持,而是微軟基於自身利益需要,在支持、營銷上推自己的資料庫產品;但是作為平臺戰略,他並非排斥其他資料庫,而是參考java體系提出了一套資料庫訪問規範,讓各個第三方進行開發,提供特定的驅動。
  • 如何使用MySQL資料庫
    如何使用MySQL資料庫前言:前面我們已經了解了如何搭建MySQL資料庫,那麼接下來我們就一起來了解一下,如何使用MySQL資料庫。MySQL資料庫系統也是一個典型的C/S(客戶端/伺服器)架構應用,要訪問MySQL資料庫需要使用專門的客戶端軟體。在linux系統中,最簡單、易用的MySQL客戶端軟體是其自帶的MySQL命令工具。
  • day06-python資料庫-mysql之安裝
    之前所學,數據要永久保存,比如用戶註冊的用戶信息,都是保存於文件中,而文件只能存在於某一臺機器上。如果我們不考慮從文件中讀取數據的效率問題,並且假設我們的程序所有的組件都運行在一臺機器上,那麼用文件存取數據,並沒有問題。
  • php mysql PDO 查詢操作的實例詳解
    http://www.jb51.net/article/124388.htm這篇文章主要介紹了php mysql PDO
  • 一文詳解MySQL權限
    ,作用於某個指定的資料庫上或者所有的資料庫上資料庫對象級別的權限,作用於指定的資料庫對象上(表、視圖等)或 者所有的資料庫對象上權限存儲在mysql庫的user, db, tables_priv, columns_priv, and procs_priv這幾個系統表中,待MySQL實例啟動後就加載到內存中MySQL權限級別介紹
  • MySQL資料庫實例管理器命令行選項詳解
    首頁 > 語言 > 關鍵詞 > 資料庫最新資訊 > 正文 MySQL資料庫實例管理器命令行選項詳解
  • Mysql資料庫的使用方法
    :        1)資料庫-database:保存有組織的數據的容器(通常是一個文件或一組文件)        2)表-table:某種特定類型數據的結構化清單        3)模式-schema:關於資料庫和表的布局及特性的信息        4)列-column:表中的一個欄位,所有表都是由一個或多個列組成的        5)行-row:表中的一個記錄
  • 基於MySQL的高性能資料庫應用開發
    開始,我們採用了MS SQLServer 6.5 作為資料庫系統,用Visual C++ 6.0開發了訪問資料庫的前端,應用ODBC數據接口,在進行了大量的資料庫配置和程序優化後,發現仍不能滿足性能要求。
  • MySQL資料庫操作語法詳解
    create_specification中指定了創建資料庫特性。資料庫特性存放在資料庫目錄下的db.opt文件中,一般在資料庫安裝目錄的data/db_name/子目錄下。CHARACTER SET子句指定了資料庫默認的字符集,COLLATE子句指定了資料庫默認校對。
  • ASP.NET與MySQL資料庫簡明圖示入門教程
    MySQL資料庫是一種開放原始碼的資料庫,通過獲得授權來保持原始碼的官方支持,同時可以自由修改原始碼,目前許多公司和組織都採用了這種資料庫。對此詳細信息您可以訪問MySQL的官方站點。第一步下載和安裝與大多數軟體一樣,首先是得到並安裝mysql資料庫軟體,獲得Mysql資料庫的方很簡單,在https://dev.mysql.com/downloads/index.html.上可以自由下載,本文採用的是Mysql4.1,當然讀者也可以下在其他版本,不過我要推薦給讀者的是最好下載預編譯的二進位的文件。
  • 玩轉Mysql系列 - 第25篇:sql中where條件在資料庫中提取與應用淺析
    歡迎大家加我微信itsoku一起交流java、算法、資料庫相關技術。這是Mysql系列第25篇。讀本篇文章之前,需要先了解一些知識:什麼是索引?mysql索引原理詳解mysql索引管理詳解如何正確的使用索引?
  • 一看就會,MySQL資料庫的基本操作(四)
    本節繼續學習資料庫的有關操作。1、啟動或者關閉MySQL服務兩種方法:第一種方法:利用系統服務打開。具體是打開命令窗口(win+r),輸入services.msc,然後在右側服務列表中找到MSQL服務。可能有的後邊有版本號。比如MSQL56,雙擊打開或者關閉服務。
  • 考前複習必備MySQL資料庫(關係型資料庫管理系統)
    命令:mysql -h遠程主機ip -uroot -p密碼退出mysql命名:exit回車,但是注意,想要成功連接到遠程主機,需要在遠程主機打開mysql遠程訪問權限。mysql和sqlite的區別mysql是web世界中使用最廣泛的資料庫伺服器。mysql是為伺服器端設計的資料庫,能承受高並發訪問,同時佔用的內存也遠遠大於SQLite。
  • python對mysql資料庫的操作(一)
    在自動化測試中,某些人認為是沒有必要操作資料庫的,理由是大多數的自動化測試都是UI的,非接口的自動化測試,其實,在一個項目的自動化測試中,這種定義很模糊,或者說很不明確,比如在自動化測試中,怎麼來驗證用戶登錄成功,用戶註冊成功?先來說登錄,用戶登錄成功後,驗證點首先是用戶的暱稱,再有麼?
  • 揭秘一條select語句,在MySQL中權限訪問控制內幕
    在MySQL資料庫中,權限訪問控制實際上有兩大模塊。
  • mysql查詢資料庫導致中文亂碼
    mysql查詢資料庫,如果資料庫裡的欄位的值是中文,就會出現亂碼,怎麼解決呢?看下面的講解寫一個test.php的文檔,代碼如下所示,打開mysql的界面,新建一個xml的資料庫,再建一個student的數據表,欄位值和記錄如下圖所示,打開谷歌瀏覽器,運行test.php文檔。運行結果是下圖:看到了吧,出現亂碼了,怎麼辦呢?
  • MySQL資料庫常用命令詳解
    從圖3-45可以看出,執行該命令後,終端窗口顯示了當前MySQL下有四個資料庫,分別是information_schema\mysql\performance_schema\sys\,這四個資料庫都是系統資料庫。
  • 保障MySQL資料庫安全的14個最佳方法
    1、避免從網際網路訪問MySQL資料庫,確保特定主機才擁有訪問特權  直接通過本地網絡之外的計算機改變生產環境中的資料庫是異常危險的。MySQL中,匿名用戶可以訪問test資料庫。文件  在用戶訪問MySQL控制臺時,所有的命令歷史都被記錄在~/.mysql_history中。
  • 每天一分鐘,python一點通(Python 連接資料庫mysql)
    2021-01-10 12:00:02 來源: 人工智慧一加一 舉報   上期文章我們分享了如何使用資料庫界面化操作
  • ASP.NET實戰002:MySQL資料庫連接
    目前主流的資料庫管理系統有:Oracle、MySQL、SQL Server、PostgreSQL、MongoDB、DB2、Redis等,今天主要分享下ASP.NET如何連結MySQL資料庫。MySQL資料庫MySQL是一款關係型資料庫管理系統,關係型資料庫是將數據保存在不同的數據表中,表與表之間可以通過外鍵關聯來匹配,這樣就提高了查錶速度並增強了表之間的靈活性。