Microsoft Enterprise Library的MySQL连接器(2005年1月版本)





3.00/5 (7投票s)
2005年6月9日
2分钟阅读

139236

2187
为 Microsoft 企业库的数据访问应用程序块添加对 MySQL 数据库的支持。
注意:由于企业库的变更,本文档现已过时。
引言
此代码为 Microsoft 企业库的数据访问应用程序块添加了 MySQL 数据库访问支持。
背景
Microsoft 企业库定义并实现了“应用程序块”。应用程序块是可重用的软件组件,旨在帮助开发人员解决常见的企业(或非企业)开发挑战。
此代码使用本地 MySQL .NET 连接器程序集。
重新构建数据应用程序块
为了获得 MySQL 支持,您需要重新构建数据应用程序块。在默认安装路径(C:\Program Files\Microsoft Enterprise Library\src\Data)下,创建一个 MySql 子文件夹,并提取源代码文件(MySqlDatabase.cs 和 MySqlCommandWrapper.cs)。打开 Data.sln 项目,并将这两个文件添加到 Data 项目。同时添加对 MySql.Data.dll 程序集的引用。然后重新构建。
向数据访问块添加新的连接器
新的连接器是一个继承自抽象类 Database
的类。它至少必须重写所有抽象函数。一个新的命令包装器类 MySqlCommandWrapper
,它实现了 DBCommandWrapper
类,有助于限制功能(不支持存储过程访问等)。请参阅 C:\Program Files\Microsoft Enterprise Library\src\Data\Sql\ 文件夹中的文件以了解更多信息。
使用代码
以下是使用数据应用程序块进行简单标准的数据库访问,它从表“test”中选择“name”和“value”列。
// Create the Database object, using the default database service. The
// default database service is determined through configuration.
Database db = DatabaseFactory.CreateDatabase();
string sqlCommand = "SELECT name, value FROM test LIMIT 1,20";
DBCommandWrapper dbCommandWrapper = db.GetSqlStringCommandWrapper(sqlCommand);
StringBuilder readerData = new StringBuilder();
// The ExecuteReader call will request the connection to be closed upon
// the closing of the DataReader. The DataReader will be closed
// automatically when it is disposed.
using (IDataReader dataReader = db.ExecuteReader(dbCommandWrapper))
{
// Iterate through DataReader and put results to the text box.
// DataReaders cannot be bound to Windows Form controls (e.g. the
// resultsDataGrid), but may be bound to Web Form controls.
while (dataReader.Read())
{
// Get the values of the 'Name' and 'Value' columns in the DataReader
readerData.Append(dataReader["name"]);
readerData.Append( " = " );
readerData.Append(dataReader["value"]);
readerData.Append("<br>");
}
}
改进
- 此连接器基于编写时可用的 MySQL 发布版本(而非 Beta 版本)。此版本不支持存储过程,但您可以轻松实现它们。
- 当使用直接 SQL 语法时,数据访问块提供的数据库独立性在某种程度上是无用的,因为 MySQL 语法与 T-SQL 不兼容。有一个开源项目(记不清它的名字了),可以用来创建数据库独立的 SQL 查询。将它集成进去也是一个不错的选择。
了解更多
历史
- 2005-06-09 - 首次发布。