// // Mono.Data.ProviderFactory // // Authors: // Brian Ritchie (brianlritchie@hotmail.com) // // // Copyright (C) Brian Ritchie, 2002 // // using System; using System.Data; using System.Reflection; using System.Runtime.Remoting; using System.Configuration; using System.Xml; using System.Collections.Specialized; namespace Mono.Data { public class ProviderFactory { private static ProviderCollection providers; static ProviderFactory() { providers=(ProviderCollection) ConfigurationSettings.GetConfig("mono.data/providers"); if (providers==null) providers=new ProviderCollection(); } static public ProviderCollection Providers { get { return providers; } } static public IDbConnection CreateConnectionFromConfig(string Setting) { return CreateConnection(ConfigurationSettings.AppSettings[Setting]); } static public IDbConnection CreateConnection(string ConnectionString) { string[] ConnectionAttributes=ConnectionString.Split(new Char[1] { ';' }); string ProviderName=null; string NewConnectionString=""; foreach (string s in ConnectionAttributes) { string[] AttributeParts=s.Split(new Char[1] { '=' }); if (AttributeParts[0].ToLower().Trim()=="factory") ProviderName=AttributeParts[1].Trim(); else NewConnectionString+=";"+s; } NewConnectionString=NewConnectionString.Remove(0,1); return CreateConnection(ProviderName, NewConnectionString); } static public IDbConnection CreateConnection(string ProviderName, string ConnectionString) { Provider provider=providers[ProviderName]; IDbConnection conn=provider.CreateConnection(); conn.ConnectionString=ConnectionString; return conn; } static public IDbCommand CreateStoredProc(IDbConnection Conn, string CommandName) { IDbCommand cmd=Conn.CreateCommand(); cmd.CommandText=CommandName; cmd.CommandType=CommandType.StoredProcedure; return cmd; } static public IDbDataAdapter CreateDataAdapter(IDbCommand SelectCommand) { Provider provider=providers.FindByCommandType(SelectCommand.GetType()); IDbDataAdapter adapter=provider.CreateDataAdapter(); adapter.SelectCommand=SelectCommand; return adapter; } static public IDbDataAdapter CreateDataAdapter(string ProviderName) { Provider provider=providers[ProviderName]; IDbDataAdapter adapter=provider.CreateDataAdapter(); return adapter; } static public IDbDataAdapter CreateDataAdapter(IDbConnection Conn, string SelectCommand) { IDbCommand cmd=Conn.CreateCommand(); cmd.CommandText=SelectCommand; return CreateDataAdapter(cmd); } static public IDbCommand CreateCommand(string ProviderName) { Provider provider=providers[ProviderName]; return provider.CreateCommand(); } static public IDbCommand CreateCommand(IDbConnection Conn) { return Conn.CreateCommand(); } } }