Click here to Skip to main content
Click here to Skip to main content
Go to top

MySQL connector for Microsoft Enterprise Library (January 2005 version)

, 9 Jun 2005
Rate this:
Please Sign up or sign in to vote.
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

Share

About the Author

Benjamin Mayrargue
Architect
France France
Benjamin designs high-end software solutions in C++ and C# always using the latest technologies available, if the customer agrees !

Comments and Discussions

 
QuestionDatabase independent SQL queries ? Pinmemberpepecandelas29-Aug-06 13:27 
GeneralSupport for Enterprise Library 2.00 PinmemberRamWebReg15-Apr-06 23:05 
GeneralRe: Support for Enterprise Library 2.00 PinmemberBenjamin.Mayrargue16-Apr-06 0:33 
QuestionRe: Support for Enterprise Library 2.00 Pinmembermobil200130-May-06 10:33 
AnswerRe: Support for Enterprise Library 2.00 PinmemberMark Pryce-Maher18-Sep-06 1:24 
QuestionThis Article is Out of Date? Pinmemberf2092-Feb-06 14:04 
AnswerRe: This Article is Out of Date? PinmemberBenjamin.Mayrargue16-Apr-06 0:32 
GeneralMySql 5.0 version of the wrapper Pinmembermelntess5-Jan-06 6:03 
GeneralRe: MySql 5.0 version of the wrapper PinmemberBenjamin.Mayrargue27-Jan-06 1:58 
I've sent you my email
GeneralRe: MySql 5.0 version of the wrapper Pinmembergalediaz23-Aug-06 8:20 
GeneralRe: MySql 5.0 version of the wrapper Pinmemberf2092-Feb-06 14:10 
QuestionRe: MySql 5.0 version of the wrapper Pinmembertemplar197117-Jan-07 19:50 
GeneralRe: MySql 5.0 version of the wrapper Pinmemberzhongxunyang3-Sep-07 17:08 
GeneralDbCommandWrapper Now is Not use In Enterprise Library Pinmembersehatrosny19-Nov-05 18:47 
GeneralRe: DbCommandWrapper Now is Not use In Enterprise Library PinmemberBenjamin.Mayrargue27-Jan-06 2:01 
GeneralHangs across Network Pinmemberbrandons1-Nov-05 8:05 
GeneralEnterpriseLibrary &amp; MySQL PinsussThomas Fox24-Jun-05 3:45 
Generalwhere is MySqlPermissionAttribute Pinmembercoffeechina12-Jun-05 5:01 
GeneralRe: where is MySqlPermissionAttribute PinmemberBenjamin.Mayrargue27-Jan-06 1:59 
Generalwhy not reference in config console Pinmembercoffeechina12-Jun-05 4:53 
GeneralRe: why not reference in config console PinmemberBenjamin.Mayrargue27-Jan-06 1:59 
Generalwhy not reference mysql in config console Pinmembercoffeechina12-Jun-05 4:51 
GeneralRe: why not reference mysql in config console PinmemberBenjamin.Mayrargue27-Jan-06 1:59 
GeneralMySql and large blobs PinmemberKeith Farmer9-Jun-05 7:14 
GeneralRe: MySql and large blobs PinmemberBenjamin.Mayrargue9-Jun-05 20:40 
GeneralRe: MySql and large blobs PinmemberKeith Farmer9-Jun-05 22:34 
GeneralIn fact one already exists PinmemberBenjamin.Mayrargue9-Jun-05 5:34 
GeneralRe: In fact one already exists Pinmemberbrandons1-Nov-05 8:03 
GeneralRe: In fact one already exists Pinmembersehatrosny18-Nov-05 12:22 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web02 | 2.8.140926.1 | Last Updated 9 Jun 2005
Article Copyright 2005 by Benjamin Mayrargue
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid