数据库入门浅析:ASP.NET与MySQL连接
數據庫是每一個開發人員都要接觸的,每個企業對數據庫的重視程度都非常深的,數據庫可以說是一個企業未來發展的一個重要依靠, 如果你不是只在大集團公司工作過的話,你一定會有機會接觸到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進行訪問與MySQLDriverCS進行訪問:?
利用ODBC.NET進行數據庫訪問?
可能很多人對ODBC .NET Data Provider對有一定的了解, ODBC .NET是在.NET的整個框架中屬于附加組件,它需要系統已經安裝MDAC 2.7或者更高版本。另外,還需要安裝MySQL的ODBC驅動程序,下載地址為:http://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();?? } |
利用MySQLDriverCS進行數據庫訪問?
可能大部分的人都不知道這個東西,MySQLDriverCS是MySQL數據庫的一個免費開源的.NET驅動程序。和Sql .NET Data Provider是為Sql Server一樣,它是專門為MySQL設計的,可以叫做MySQL .NET Data Provider。使用他不需要額外的去設置ODBC數據源,基本上只要能連接到MySQL就能通過MySQLDriverCS來訪問。?
MySQLDriverCS是SourceForge.NET上的一個項目,不過不知道什么原因,這個網站在國內訪問不到。?
下面是使用MySQLDriverCS的代碼示例:?
| 以下是代碼片段:? MySQLConnection conn = null;?? try?? {?? string connstr = "Data Source=MySQL;Password=root;User ID=root;Location=localhost";?? conn = new MySQLConnection(constr);?? conn.Open();?? string query = "insert into test.dbtable values(10, 'disksidkfsdi', 'asdfaf', 'adsfasdf')";?? string tmp = null;?? MySQLCommand cmd = new MySQLCommand(query, conn);?? for(int i = 0; i < 100000; i++)?? {?? cmd.ExecuteNonQuery();?? }?? cmd.Dispose();?? conn.Close();?? query = "select * from test.dbtable";?? MySQLCommand cmd2 = new MySQLCommand(query, conn);?? conn.Open();?? MySQLDataReader reader = cmd2.ExecuteReaderEx();?? 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";?? MySQLCommand cmd3 = new MySQLCommand(query, conn);?? conn.Open();?? cmd3.ExecuteNonQuery();?? }?? catch(Exception ex)?? {?? MessageBox.Show(ex.Message);?? }?? finally?? {?? conn.Close();?? } |
可能很多人對于上面的代碼都一目了然,最后程序實現的功能與結果也已心里有數。上面的代碼所要表達的用意就是對程序進行性能的測試。以上兩段代碼的執行時間分別是:ODBC.NET為24秒左右,MySQLDriverCS為17秒左右。結果并不出人意外,作為MySQL的專用數據驅動程序,MySQLDriverCS的速度大大快于ODBC.NET是在情理之中的。?
總結?
在本文中讀者們了解到了從.NET中訪問MySQL數據庫的兩種方法,在文章的最后也同時進行了一個性能的測試,相信大家應該有了一個大概的了解,也許對MySQL數據的訪問可能還有更多的訪問方法,在本文中筆者就不一一為大家闡述,希望對大家能有一個參考價值。
轉載于:https://www.cnblogs.com/mengheyun/archive/2011/02/18/1957609.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的数据库入门浅析:ASP.NET与MySQL连接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows Phone 7 多点触摸
- 下一篇: HEAP: Free Heap bloc