Dynamic Connection Strings in Microsoft Enterprise Library 3.1

I'm a complete beginner when it comes to .NET coding. I've been tasked to write a C# database class for the basic connect, dataset, datareader etc functions. It's going to replace existing VB code, so needs to be available to both WIndows apps and Excel VBA.

I've come across the Ent Lib and while it provides most of the functionaility, I like may others can't find a way to use the Database Factory with a dynamic connection string. My boss likes the functionality it provides, but wants to see another layer of encapsulation on top - i.e. a simple connect(connString) to connect to a db.

Is it worth looking at Ent Lib for this purpose or am I better off starting from scratch? Can anyone provide a wrapper that encapsulates the functionality I need?
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

MogalManicConnect With a Mentor Commented:

Most of the code I write is proprietary or uses a database mapping tool called IBATIS (http://ibatis.apache.org/).

I did a quick search of Code project and found the following:
  - http://www.codeproject.com/cs/database/Multi-Tier.asp - looks like a wrapper around the DataTable class
  - http://www.codeproject.com/cs/database/CustomCommandBuilder.asp - Typed dataset wrapper
  - http://www.codeproject.com/cs/database/MpmCodeproject.asp - Wrapper for open source Mimer (http://developer.mimer.com/mpm/)
  - http://www.codeproject.com/cs/database/persistedobject.asp - Generic persistance wrapper
  - http://www.codeproject.com/vb/net/data_access_layer.asp - THIN ADO.net wrapper (written in vb.net)
  - http://www.codeproject.com/cs/database/SimpleQuery.asp - Simple query methods (needs support for parameters added)

You can take samples from the above and build your framework.
You could write a simple method that parses the connection string for the provider attribute and then return the proper connection object.  Maybe something like this:
static public IDbConnection CreateConnection(string ConnectionString) 
 if (ConnectionString==null || ConnectionString.Length==0)
   throw new Exception("Unknown or undefined datasource name");
 string[] ConnectionAttributes=ConnectionString.Split(';'); 
 string NewConnectionString="";
 foreach (string s in ConnectionAttributes) {
   string[] AttributeParts=s.Split('=');
   string attributeName=AttributeParts[0].ToLower().Trim();
   if (attributeName=="provider") 
     string provider=AttributeParts[1].ToLower();
     if (provider == "system.data.sqlclient")
        return new SqlConnection(connectionString);
     else if (provider == "system.data.oledb")
        return new OleDbConnection(connectionString);
     else if (provider == "system.data.oracleclient")
        return new OracleConnection(connectionString);
   throw new Exception("Missing 'provider' attribute in connection string");

Open in new window

da_hAuthor Commented:
Thanks Mogal....sorry for the slow reply, I've been interstate.

Although this is along the lines of what I'm looking for. Ideally what I'd like to know is if there is a somewhat complete database class / wrapper that you tend to use as the basis of a database dependent project, i.e something that handles opening, closing, stored procs, querying etc that can then be customised to suit the projects needs.

I'm not looking for someone to write the complete class for me but would assume that a relatively complete (and hopefully well coded) example exists out there somewhere.

da_hAuthor Commented:

I've since found a couple of good examples to get me going. Some of your links have helped fill in the gaps.
All Courses

From novice to tech pro — start learning today.