Click here to Skip to main content
15,860,972 members
Articles / Database Development / MySQL
Article

MySQL connector for Microsoft Enterprise Library (January 2005 version)

Rate me:
Please Sign up or sign in to vote.
3.00/5 (7 votes)
9 Jun 20052 min read 134.4K   2.2K   31   29
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":

C#
// 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


Written By
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 ? Pin
japonte29-Aug-06 13:27
japonte29-Aug-06 13:27 
GeneralSupport for Enterprise Library 2.00 Pin
RamWebReg15-Apr-06 23:05
RamWebReg15-Apr-06 23:05 
GeneralRe: Support for Enterprise Library 2.00 Pin
Benjamin Mayrargue16-Apr-06 0:33
Benjamin Mayrargue16-Apr-06 0:33 
QuestionRe: Support for Enterprise Library 2.00 Pin
mobil200130-May-06 10:33
mobil200130-May-06 10:33 
AnswerRe: Support for Enterprise Library 2.00 Pin
Mark Pryce-Maher18-Sep-06 1:24
Mark Pryce-Maher18-Sep-06 1:24 
QuestionThis Article is Out of Date? Pin
f2092-Feb-06 14:04
f2092-Feb-06 14:04 
AnswerRe: This Article is Out of Date? Pin
Benjamin Mayrargue16-Apr-06 0:32
Benjamin Mayrargue16-Apr-06 0:32 
GeneralMySql 5.0 version of the wrapper Pin
melntess5-Jan-06 6:03
melntess5-Jan-06 6:03 
GeneralRe: MySql 5.0 version of the wrapper Pin
Benjamin Mayrargue27-Jan-06 1:58
Benjamin Mayrargue27-Jan-06 1:58 
I've sent you my email
GeneralRe: MySql 5.0 version of the wrapper Pin
galediaz23-Aug-06 8:20
galediaz23-Aug-06 8:20 
GeneralRe: MySql 5.0 version of the wrapper Pin
f2092-Feb-06 14:10
f2092-Feb-06 14:10 
QuestionRe: MySql 5.0 version of the wrapper Pin
Nicola Gennaro17-Jan-07 19:50
Nicola Gennaro17-Jan-07 19:50 
GeneralRe: MySql 5.0 version of the wrapper Pin
zhongxunyang3-Sep-07 17:08
zhongxunyang3-Sep-07 17:08 
GeneralDbCommandWrapper Now is Not use In Enterprise Library Pin
Albert8752219-Nov-05 18:47
Albert8752219-Nov-05 18:47 
GeneralRe: DbCommandWrapper Now is Not use In Enterprise Library Pin
Benjamin Mayrargue27-Jan-06 2:01
Benjamin Mayrargue27-Jan-06 2:01 
GeneralHangs across Network Pin
brandons1-Nov-05 8:05
brandons1-Nov-05 8:05 
GeneralEnterpriseLibrary &amp; MySQL Pin
Thomas Fox24-Jun-05 3:45
Thomas Fox24-Jun-05 3:45 
Generalwhere is MySqlPermissionAttribute Pin
coffeechina12-Jun-05 5:01
coffeechina12-Jun-05 5:01 
GeneralRe: where is MySqlPermissionAttribute Pin
Benjamin Mayrargue27-Jan-06 1:59
Benjamin Mayrargue27-Jan-06 1:59 
Generalwhy not reference in config console Pin
coffeechina12-Jun-05 4:53
coffeechina12-Jun-05 4:53 
GeneralRe: why not reference in config console Pin
Benjamin Mayrargue27-Jan-06 1:59
Benjamin Mayrargue27-Jan-06 1:59 
Generalwhy not reference mysql in config console Pin
coffeechina12-Jun-05 4:51
coffeechina12-Jun-05 4:51 
GeneralRe: why not reference mysql in config console Pin
Benjamin Mayrargue27-Jan-06 1:59
Benjamin Mayrargue27-Jan-06 1:59 
GeneralMySql and large blobs Pin
Keith Farmer9-Jun-05 7:14
Keith Farmer9-Jun-05 7:14 
GeneralRe: MySql and large blobs Pin
Benjamin Mayrargue9-Jun-05 20:40
Benjamin Mayrargue9-Jun-05 20:40 

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

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