Author: kostat
Date: 2006-05-25 11:49:21 -0400 (Thu, 25 May 2006)
New Revision: 61113
Modified:
branches/mainsoft/gh1.7/mcs/class/System.Data/Mainsoft.Data.Jdbc.Providers.jvm/IProvider.cs
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbConnection.cs
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.ProviderBase.jvm/AbstractDBConnection.cs
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.SqlClient.jvm/SqlConnection.cs
Log:
1. Support multiple providers for SqlClient.
2. Add possibility to choose provider from SqlClient by adding "Provider=" to
connection string.
3. Unify id and provider parameters; use id for provider name everywhere.
Modified:
branches/mainsoft/gh1.7/mcs/class/System.Data/Mainsoft.Data.Jdbc.Providers.jvm/IProvider.cs
===================================================================
---
branches/mainsoft/gh1.7/mcs/class/System.Data/Mainsoft.Data.Jdbc.Providers.jvm/IProvider.cs
2006-05-25 15:48:16 UTC (rev 61112)
+++
branches/mainsoft/gh1.7/mcs/class/System.Data/Mainsoft.Data.Jdbc.Providers.jvm/IProvider.cs
2006-05-25 15:49:21 UTC (rev 61113)
@@ -48,7 +48,7 @@
#region Consts
- public const string Name = "Provider";
+ public const string Name = "id";
public const string KeyMapping = "keyMapping";
public const string KeyMappingExcludes = "keyExclude";
public const string JdbcUrlPattern = "url";
Modified:
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbConnection.cs
===================================================================
---
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbConnection.cs
2006-05-25 15:48:16 UTC (rev 61112)
+++
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbConnection.cs
2006-05-25 15:49:21 UTC (rev 61113)
@@ -46,12 +46,7 @@
namespace System.Data.OleDb
{
public sealed class OleDbConnection : AbstractDBConnection {
- #region Fields
- static readonly IList _providers = (IList)
ConfigurationSettings.GetConfig("Mainsoft.Data.Configuration/OleDbProviders");
-
- #endregion //Fields
-
#region Events
public event OleDbInfoMessageEventHandler InfoMessage;
@@ -84,22 +79,11 @@
protected override IConnectionProvider GetConnectionProvider() {
IDictionary conProviderDict =
ConnectionStringDictionary.Parse(ConnectionString);
- string providerName =
(string)conProviderDict["Provider"];
-
- if (providerName != null)
- for (int i = 0; i < _providers.Count; i++) {
- IDictionary providerInfo = (IDictionary)
_providers[i];
-
- string curProvider =
(string)providerInfo["Provider"];
- if (String.Compare(providerName, 0,
curProvider, 0, providerName.Length, true, CultureInfo.InvariantCulture) == 0) {
- string providerType = (string)
providerInfo [ConfigurationConsts.ProviderType];
- if (providerType == null ||
providerType.Length == 0)
- return new GenericProvider
(providerInfo);
- else {
- Type t = Type.GetType
(providerType);
- return (IConnectionProvider)
Activator.CreateInstance (t , new object[] {providerInfo});
- }
- }
+ string jdbcUrl = (string)conProviderDict["JdbcUrl"];
+ if (jdbcUrl == null) {
+ string provider =
(string)conProviderDict["Provider"];
+ if (provider != null)
+ return
GetConnectionProvider("Mainsoft.Data.Configuration/OleDbProviders", provider);
}
return new GenericProvider (conProviderDict);
Modified:
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.ProviderBase.jvm/AbstractDBConnection.cs
===================================================================
---
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.ProviderBase.jvm/AbstractDBConnection.cs
2006-05-25 15:48:16 UTC (rev 61112)
+++
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.ProviderBase.jvm/AbstractDBConnection.cs
2006-05-25 15:49:21 UTC (rev 61113)
@@ -29,7 +29,7 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-
+using System.Globalization;
using System.Data;
using System.Data.ProviderBase;
using System.Data.Configuration;
@@ -361,6 +361,33 @@
}
protected abstract IConnectionProvider GetConnectionProvider();
+ static protected IConnectionProvider
GetConnectionProvider(string sectionMame, string provider) {
+ if (provider == null)
+ throw new ArgumentNullException("provider");
+
+ IList providers = (IList)
ConfigurationSettings.GetConfig(sectionMame);
+ if (providers.Count == 0)
+ throw new ArgumentException("Configuration
section is empty.", "sectionName");
+
+ for (int i = 0; i < providers.Count; i++) {
+ IDictionary providerInfo = (IDictionary)
providers[i];
+
+ string curProvider =
(string)providerInfo[ConfigurationConsts.Name];
+ if (String.Compare(provider, 0, curProvider, 0,
provider.Length, true, CultureInfo.InvariantCulture) == 0) {
+ string providerType = (string)
providerInfo [ConfigurationConsts.ProviderType];
+ if (providerType == null ||
providerType.Length == 0)
+ return new GenericProvider
(providerInfo);
+ else {
+ Type t = Type.GetType
(providerType);
+ return (IConnectionProvider)
Activator.CreateInstance (t , new object[] {providerInfo});
+ }
+ }
+ }
+
+ throw new ArgumentException(
+ String.Format("Unknown provider name '{0}'",
provider), "ConnectionString");
+ }
+
#endregion // Properties
#region Methods
Modified:
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.SqlClient.jvm/SqlConnection.cs
===================================================================
---
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.SqlClient.jvm/SqlConnection.cs
2006-05-25 15:48:16 UTC (rev 61112)
+++
branches/mainsoft/gh1.7/mcs/class/System.Data/System.Data.SqlClient.jvm/SqlConnection.cs
2006-05-25 15:49:21 UTC (rev 61113)
@@ -48,23 +48,10 @@
private const int DEFAULT_PACKET_SIZE = 8192;
- static readonly IConnectionProvider _connectionProvider;
-
#endregion // Fields
#region Constructors
- static SqlConnection() {
- IDictionary providerInfo = (IDictionary)((IList)
ConfigurationSettings.GetConfig("Mainsoft.Data.Configuration/SqlClientProvider"))[0];
- string providerType = (string) providerInfo
[ConfigurationConsts.ProviderType];
- if (providerType == null || providerType.Length == 0)
- _connectionProvider = new GenericProvider
(providerInfo);
- else {
- Type t = Type.GetType (providerType);
- _connectionProvider = (IConnectionProvider)
Activator.CreateInstance (t , new object[] {providerInfo});
- }
- }
-
public SqlConnection() : this(null)
{
}
@@ -114,7 +101,12 @@
}
protected override IConnectionProvider GetConnectionProvider() {
- return _connectionProvider;
+ IDictionary conProviderDict =
ConnectionStringDictionary.Parse(ConnectionString);
+ string provider = (string)conProviderDict["Provider"];
+ if (provider == null)
+ provider = "SQLCLIENT";
+
+ return
GetConnectionProvider("Mainsoft.Data.Configuration/SqlClientProviders",
provider);
}
#endregion // Properties
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches