由于富有竞争力的价格和易于使用,mysql在市场占有率方面逐步提升。开放源代码社区为了扩展mysql的使用范围,开发出了.net框架(.net framework)中可以使用的数据库连接器。我们就来学习一下如何在.net应用程序中使用mysql。
每周三发布的techrepublic的.net通讯,包含有网络服务, asp.net, ado.net, 和 visual studio .net相关的实用技巧与代码实例. 现在就自动订阅!
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,环境下高度灵活的开发平台。
新闻热点
疑难解答
图片精选