Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

MySQL connector for Microsoft Enterprise Library (January 2005 version)

0.00/5 (No votes)
9 Jun 2005 1  
Adds support for MySQL databases in the Data Access Application Block.

Sample Image - pponline.gif

Note: This article is now outdated due to changes in the Enterprise Library.

Introduction

This code adds support for MySQL database access to the Data Access Application Block of the Microsoft Enterprise Library.

Background

The Microsoft Enterprise Library defines and implements "Application Blocks". Application blocks are reusable software components designed to assist developers with common enterprise (or not) development challenges.

This code uses the native MySQL .NET Connector assembly.

Rebuilding the Data Application Block

In order to get MySQL support, you need to rebuild the Data Application Block. Under the default install path (C:\Program Files\Microsoft Enterprise Library\src\Data), create a MySql subfolder and extract the source files (MySqlDatabase.cs and MySqlCommandWrapper.cs). Open the Data.sln project and add these two files to the Data project. Add also a reference to the MySql.Data.dll assembly. Rebuild.

Adding a new connector to the Data Access block

A new connector is a class which derives from the abstract Database class. It must at least override all abstract functions. A new command wrapper class MySqlCommandWrapper which implements the DBCommandWrapper class helps limiting the functionalities (not supported stored procedure access, ...). See the files in C:\Program Files\Microsoft Enterprise Library\src\Data\Sql\ folder to go further.

Using the code

Here is a simple and standard database access using the Data Application Block which selects columns "name" and "value" from the table "test":

    // 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>");
        }
    }

Improvements

  • This connector is based on the release version of MySQL (not the beta) available at the time it is written. This version does not support stored procedures, but you can implement them easily.
  • The database independence provided by the Data Access Block is somewhat useless when using direct SQL syntax, because MySQL syntax is not T-SQL compatible. There is an open-source project (can't remember its name) which can be used to create database independent SQL queries. It would be nice to integrate it also.

Learn more

Learn more about Microsoft Patterns and Practices

History

  • 2005-06-09 - First release.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here