国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

準備使用MySQL與ASP.NET開發Web應用

2024-07-10 13:06:30
字體:
來源:轉載
供稿:網友

最近準備用mysql+.net作開發,看了三篇文章:

     1)mysql與asp.net配合更強大;

     2)選擇mysql還是sql server;

     3)mysql和.net2.0配合使用。

mysql與asp.net配合更強大

由于富有競爭力的價格和易于使用,mysql在市場占有率方面逐步提升。開放源代碼社區為了擴展mysql的使用范圍,開發出了.net框架(.net framework)中可以使用的數據庫連接器。我們就來學習一下如何在.net應用程序中使用mysql。


  mysql漸漸的成為了在選擇數據庫平臺時一個切實可行的數據庫方案。能夠證明這一點的就是許多公司都選擇mysql作為他們的數據庫平臺,例如 google、美聯社(the associated press) 以及美國國家航空宇航局( nasa)。雖然對于一個開放源代碼來說,低廉的價格常常被當作主要優點來說服客戶,但是對于象google那樣的大規模的組織來說,他們不會放心的把非常有用的信息存放在一個只有價格優勢的數據庫產品中。mysql真正的實力遠遠的超過了他的價格優勢,他提供了豐富的來自開放源代碼社區和商業化的附加工具。


  和.net的數據整合

  mysql 社區已經開發出了mysql的數據接口,他提供了連接數據源和程序代碼的基本功能。在windows平臺上,有如下的mysql連接器:

  * mysql connector/net 1.0 (之前被稱為bytefx.data):是一個為mysql設計的開放源代碼.net數據接口。它是完全用c#來開發的,我們可以在在 mysql.com網站上找到它。(注意:在本文的例子中,我們都會使用mysql connector/net 1.0這個數據接口來連接數據庫,利用windows安裝程序即可輕易安裝它,它的代碼實例和文檔也包含其中。)

  * mysqldirect .net data provider: 是一個由 core lab 開發的商業數據接口。他的價格由購買的許可證的類型決定,但是我們可以下載它的試用版。

  如果你使用 mono,那么在 mono網站上可以找到php連接器的下載。如果你在windows平臺上運行mono的話,你下載的連接器包含了安裝程序。如果不是的話,那就要根據你的操作系統的種類去下載合適的連接器了。

  使用mysql數據接口

  安裝好mysql的數據接口后,你必須在你的代碼中引入它才能使用。你可以使用 mysql.data.mysqlclient這個名空間來連接 mysql 服務器。在c#中,可以使用using語句來引入mysql數據接口:

  using mysql.data.mysqlclient;

  另外,你也可以在一個asp.net的網頁表單(web form)中通過使用導入(import)指令來引入mysql數據接口:

  或者,你也可以在你的代碼里在使用這個名空間時,寫全一個類的完整路徑,但是這樣的話會比使用import指令來導入輸入更多的字符,浪費更多的字節。指定了名空間后,我們就可以和mysql數據庫進行數據交互了。 mysql.data.mysqlclient這個名空間提供了許多用于處理mysql數據的類。下面是這些類的一個樣本:

  * mysqlconnection: 管理和 mysql 服務器/數據庫的連接;

  * mysqldataadapter: 一套用于填充dataset對象和更新mysql數據庫的命令和連接的集合;

  * mysqldatareader: 讓你能夠從一個 mysql 數據庫讀取數據。它是一個單向的數據流;

  * mysqlcommand: 提供向數據庫服務器發送指令的功能;

  * mysqlexception: 當發生問題時提供例外處理。

  我們會使用其中的一些類去和我們的范例數據庫進行數據交互。

  連接 mysql 數據庫

  使用mysql數據庫的第一步是要通過mysqlconnection類和數據庫建立連接。通過一個連接字串,mysqlconnection 將會被實例化成一個示例。連接字符串將告訴代碼到哪里去找mysql服務器以及其他一些選項。

  一個連接字串告訴代碼使用指定的用戶名和密碼去連接一個名為mysqltestserver的mysql服務器,并進入techrepublic數據庫。我在我的測試機上設定了允許匿名登陸(這樣的設定有非常大的安全漏洞,所以不建議你在生產服務器上也這么做),所以在范例中將會使用如下的連接字串:

  "server=localhost; database=sitepoint;"
 指定了連接字串后, mysqlconnection 對象的open方法就被調用并打開連接。連接建立后,你就可以給mysql數據庫發送命令或從數據庫獲得數據了。

  asp.net和mysql的組合

  讓我們更深入的討論一下結合mysqlconnection類和其他的類來生成一個mysql服務器上的數據庫列表。表 b列出了一個使用c#寫的asp.net的網頁表單。它建立了一個連接,接著給服務器下了一個指令(show databases),然后通過mysqlreader對象把結果顯示出來。

  用 mysqlcommand 對象向mysql服務器發送 show databases 命令和直接在 mysql 管理工具中輸入這個命令得結果是一樣的。唯一的區別是,我們在代碼中必須使用另一個對象來獲取結果集。mysqldatareader 對象在獲取結果時被實例化(通過 mysqlcommand 類的 executereader 方法)。mysqldatareader 對象的 getstring 方法被用于通過asp.net的標簽控制來顯示結果集中的數據。getstring 方法的指針0指定了顯示結果集的當前行(在while循環中)的第一列數據。

  mono提示
 如果你使用開放源代碼的mono開發平臺,例子中的代碼只需要做小小的改動就能正常的運行。mysql的數據接口在 bytefx.data.mysqlclient 這個空間名里,而不是windows上的mysql.data.mysqlclient空間名。事實上 mysql 的數據接口原來是由 bytefx公司開發的,但是后被mysql公司收購。所以如果你使用mono的話,你必須這樣聲明空間名:

  using bytefx.data.mysqlclient;

  結語

  mysql 和 .net 的組合提供了一個強大的開發平臺。mysql在開源社區得到了強大的技術支持,.net也通過 mono 而被開放源代碼社區所接受。這樣的組合提供了一個在windows,及其他語言如unix或linux,環境下高度靈活的開發平臺。


mono bytefx.data 與 encoding
bytefx.data 是 mysql 的 .net data provider, 同時提供有 mono 與 microsoft.net 的版本(微軟版本好像叫做 connector/.net).
這兩天在試著用 mono 與 bytefx.data 來存取 mysql 數據庫.
但卻發現中文的字符串在存入數據庫之后,全部都變成問號了.
原本以為是我編碼的處置或設定有問題,在經過 trace mono 與 bytefx.data 的 source code 之后,才發現并不是.
我開始懷疑是 mysql 的問題,我首先去問 google 大神.
google 大神告訴我,mysql 在 4.0 以前并不支持 unicode, 數據庫預設的編碼是 latin1.
ok, 那么為什么使用 mediawiki 或是一些 blog 卻可以存入 unicode 的字符串??
又稍稍的 trace 了 mediawiki 的 source code, 并無驚人之處,也沒有什么特別的處理,純粹就是 insert, update 而已.

最后我再回頭看 bytefx.data 的 source code, 終于找到問題所在.
bytefx.data 在丟封包到 mysql 之前,會先依據 mysql 的 encoding 進行編碼.
所以不管怎么樣,我在 client 怎么轉碼,到最后 bytefx.data 都會轉成 latin1,再進行存入.是故,可能的解法如下:
1. 升級 mysql 到 4.0 以后的版本.
2. 在丟數據庫之前,先把字符串轉為 byte[], 如果是 byte[], bytefx.data 就不會進行轉碼,而直接存入. 但這樣在取出數據的時候,還需要再作一次工,將 byte[] 轉回 string.
解法 2 相當費事,而且以后如果要更換數據庫的時候,又會再受到一次沖擊.
看來解法 1 才是王道. 但是,懶得升級說... =_=
http://cgi.blog.yam.com/trackback/566961

原文:http://www.keyusoft.cn/contentview.aspx?year=2005&month=$10&day=$19&postid=128

 

選擇mysql還是sql server

對于程序開發人員而言,目前使用最流行的兩種后臺數據庫即為mysql and sql server。這兩者最基本的相似之處在于數據存儲和屬于查詢系統。你可以使用sql來訪問這兩種數據庫的數據,因為它們都支持ansi-sql。還有,這兩種數據庫系統都支持二進制關鍵詞和關鍵索引,這就大大地加快了查詢速度。同時,二者也都提供支持xml的各種格式。

除了在顯而易見的軟件價格上的區別之外,這兩個產品還有什么明顯的區別嗎?在這二者之間你是如何選擇的?讓我們看看這兩個產品的主要的不同之處,包括發行費用,性能以及它們的安全性。

根本的區別是它們遵循的基本原則
二者所遵循的基本原則是它們的主要區別:開放vs保守。sql服務器的狹隘的,保守的存儲引擎與mysql服務器的可擴展,開放的存儲引擎絕然不同。雖然你可以使用sql服務器的sybase引擎,但mysql能夠提供更多種的選擇,如myisam, heap, innodb, and berkeley db。mysql不完全支持陌生的關鍵詞,所以它比sql服務器要少一些相關的數據庫。同時,mysql也缺乏一些存儲程序的功能,比如myisam引擎聯支持交換功能。

發行費用:mysql不全是免費,但很便宜
當提及發行的費用,這兩個產品采用兩種絕然不同的決策。對于sql服務器,獲取一個免費的開發費用最常的方式是購買微軟的office或者visual studio的費用。但是,如果你想用于商業產品的開發,你必須還要購買sql server standard edition。學校或非贏利的企業可以不考慮這一附加的費用。

性能:先進的mysql   
純粹就性能而言,mysql是相當出色的,因為它包含一個缺省桌面格式myisam。myisam 數據庫與磁盤非常地兼容而不占用過多的cpu和內存。mysql可以運行于windows系統而不會發生沖突,在unix或類似unix系統上運行則更好。你還可以通過使用64位處理器來獲取額外的一些性能。因為mysql在內部里很多時候都使用64位的整數處理。yahoo!商業網站就使用mysql作為后臺數據庫。

當提及軟件的性能,sql服務器的穩定性要比它的競爭對手強很多。但是,這些特性也要付出代價的。比如,必須增加額外復雜操作,磁盤存儲,內存損耗等等。如果你的硬件和軟件不能充分支持sql服務器,我建議你最好選擇其他如dbms數據庫,因為這樣你會得到更好的結果。

這兩者數據庫都能夠在.net或j2ee下運行正常,同樣,都能夠利用raid。

安全功能
 

mysql有一個用于改變數據的二進制日志。因為它是二進制,這一日志能夠快速地從主機上復制數據到客戶機上。即使服務器崩潰,這一二進制日志也會保持完整,而且復制的部分也不會受到損壞。

在sql服務器中,你也可以記錄sql的有關查詢,但這需要付出很高的代價。

安全性
這兩個產品都有自己完整的安全機制。只要你遵循這些安全機制,一般程序都不會出現什么問題。這兩者都使用缺省的ip端口,但是有時候很不幸,這些ip也會被一些黑客闖入。當然,你也可以自己設置這些ip端口。

恢復性:先進的sql服務器
恢復性也是mysql的一個特點,這主要表現在myisam配置中。這種方式有它固有的缺欠,如果你不慎損壞數據庫,結果可能會導致所有的數據丟失。然而,對于sql服務器而言就表現得很穩鍵。sql服務器能夠時刻監測數據交換點并能夠把數據庫損壞的過程保存下來。

根據需要決定你的選擇
對于這兩種數據庫,如果非要讓我說出到底哪一種更加出色,也許我會讓你失望。以我的觀點,任一對你的工作有幫助的數據庫都是很好的數據庫,沒有哪一個數據庫是絕對的出色,也沒有哪一個數據庫是絕對的差勁。我想要告訴你的是你應該多從你自己的需要出發,即你要完成什么樣的任務?而不要單純地從軟件的功能出發。

如果你想建立一個.net服務器體系,這一體系可以從多個不同平臺訪問數據,參與數據庫的管理,那么你可以選用sql服務器。如果你想建立一個第三方站點,這一站點可以從一些客戶端讀取數據,那么mysql將是最好的選擇。

原文:http://htm.winsteps.net/database/331.htm

mysql和.net2.0配合使用
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 博野县| 青冈县| 娄烦县| 泗水县| 玛纳斯县| 伊吾县| 土默特右旗| 南靖县| 阳高县| 镇江市| 怀化市| 噶尔县| 若羌县| 长治县| 柏乡县| 怀来县| 思南县| 广饶县| 双鸭山市| 白河县| 花垣县| 洪湖市| 宽甸| 桓台县| 仪陇县| 津南区| 湘阴县| 青河县| 张家港市| 南木林县| 文登市| 台州市| 涞水县| 宜州市| 西畴县| 延津县| 嘉义市| 民权县| 怀集县| 古蔺县| 遵化市|