65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconemptyStarIconemptyStarIcon

3.00/5 (7投票s)

2005年6月9日

2分钟阅读

viewsIcon

139236

downloadIcon

2187

为 Microsoft 企业库的数据访问应用程序块添加对 MySQL 数据库的支持。

Sample Image - pponline.gif

注意:由于企业库的变更,本文档现已过时。

引言

此代码为 Microsoft 企业库的数据访问应用程序块添加了 MySQL 数据库访问支持。

背景

Microsoft 企业库定义并实现了“应用程序块”。应用程序块是可重用的软件组件,旨在帮助开发人员解决常见的企业(或非企业)开发挑战。

此代码使用本地 MySQL .NET 连接器程序集。

重新构建数据应用程序块

为了获得 MySQL 支持,您需要重新构建数据应用程序块。在默认安装路径(C:\Program Files\Microsoft Enterprise Library\src\Data)下,创建一个 MySql 子文件夹,并提取源代码文件(MySqlDatabase.csMySqlCommandWrapper.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 查询。将它集成进去也是一个不错的选择。

了解更多

了解更多关于 Microsoft 模式与实践的信息

历史

  • 2005-06-09 - 首次发布。
© . All rights reserved.