开放源代码社区为了扩展MySQL的使用范围开发出了Net框架(NET Framework)中可以使用的数据库连接器我们就来学习一下如何在Net应用程序中使用MySQL
由于富有竞争力的价格和易于使用MySQL在市场占有率方面逐步提升开放源代码社区为了扩展MySQL的使用范围开发出了Net框架(NET Framework)中可以使用的数据库连接器我们就来学习一下如何在Net应用程序中使用MySQL
MySQL渐渐的成为了在选择数据库平台时一个切实可行的数据库方案能够证明这一点的就是许多公司都选择mySQL作为他们的数据库平台例如 Google美联社(The Associated Press) 以及美国国家航空宇航局( NASA)虽然对于一个开放源代码来说低廉的价格常常被当作主要优点来说服客户但是对于象Google那样的大规模的组织来说他们不会放心的把非常有用的信息存放在一个只有价格优势的数据库产品中MySQL真正的实力远远的超过了他的价格优势他提供了丰富的来自开放源代码社区和商业化的附加工具
和NET的数据整合
MySQL 社区已经开发出了MySQL的数据接口他提供了连接数据源和程序代码的基本功能在Windows平台上有如下的MySQL连接器
* MySQL Connector/Net (之前被称为ByteFXData):是一个为MySQL设计的开放源代码NET数据接口它是完全用C#来开发的我们可以在在 网站上找到它(注意:在本文的例子中我们都会使用MySQL Connector/Net 这个数据接口来连接数据库利用Windows安装程序即可轻易安装它它的代码实例和文档也包含其中)
* MySQLDirect NET Data Provider 是一个由 Core Lab 开发的商业数据接口他的价格由购买的许可证的类型决定但是我们可以下载它的试用版
如果你使用 Mono那么在 Mono网站上可以找到PHP连接器的下载如果你在Windows平台上运行Mono的话你下载的连接器包含了安装程序如果不是的话那就要根据你的操作系统的种类去下载合适的连接器了
使用MySQL数据接口
安装好MySQL的数据接口后你必须在你的代码中引入它才能使用你可以使用 MySqlDataMySqlClient这个名空间来连接 MySQL 服务器在C#中可以使用using语句来引入MySQL数据接口
using MySqlDataMySqlClient;
另外你也可以在一个ASPNET的网页表单(Web Form)中通过使用导入(Import)指令来引入MySQL数据接口或者你也可以在你的代码里在使用这个名空间时写全一个类的完整路径但是这样的话会比使用Import指令来导入输入更多的字符浪费更多的字节指定了名空间后我们就可以和MySQL数据库进行数据交互了 MySqlDataMySqlClient这个名空间提供了许多用于处理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数据库发送命令或从数据库获得数据了
ASPNET和MySQL的组合
让我们更深入的讨论一下结合MySqlConnection类和其他的类来生成一个MySQL服务器上的数据库列表表 B列出了一个使用C#写的ASPNET的网页表单它建立了一个连接接着给服务器下了一个指令(SHOW DATABASES)然后通过MySqlReader对象把结果显示出来
用 MySqlCommand 对象向MySQL服务器发送 SHOW DATABASES 命令和直接在 MySQL 管理工具中输入这个命令得结果是一样的唯一的区别是我们在代码中必须使用另一个对象来获取结果集MySqlDataReader 对象在获取结果时被实例化(通过 MySqlCommand 类的 ExecuteReader 方法)