Forráskód Böngészése

Added Description property to Provider
Modified app.config SectionHandler to read optional Description property
Modified sample code & config files to include Description
Added new FillDataSet overload to DataTools

svn path=/trunk/mcs/; revision=9050

Brian Ritchie 23 éve
szülő
commit
d6d12b541c

+ 24 - 0
mcs/class/Mono.Data/DataTools.cs

@@ -46,6 +46,8 @@ namespace Mono.Data
 		{
 			DataSet ds=new DataSet();
 			IDbDataAdapter adapter=ProviderFactory.CreateDataAdapter(conn, SelectCommand);
+			if (conn.State!=ConnectionState.Open)
+				conn.Open();
 			adapter.Fill(ds);
 			return ds;
 		}
@@ -54,8 +56,30 @@ namespace Mono.Data
 		{
 			DataSet ds=new DataSet();
 			IDbDataAdapter adapter=ProviderFactory.CreateDataAdapter(SelectCommand);
+			if (adapter.SelectCommand.Connection.State!=ConnectionState.Open)
+				adapter.SelectCommand.Connection.Open();
 			adapter.Fill(ds);
 			return ds;
 		}
+
+		static public DataSet FillDataSet(string ConfigSetting, string SelectCommand)
+		{
+			IDbConnection conn=ProviderFactory.CreateConnectionFromConfig(ConfigSetting);
+			conn.Open();
+			DataSet ds=null;
+			try
+			{
+				ds=new DataSet();
+				IDbDataAdapter adapter=ProviderFactory.CreateDataAdapter(SelectCommand);
+				adapter.Fill(ds);
+			}
+			finally
+			{
+				conn.Close();
+			}
+			return ds;
+		}
+
+
 	}
 }

+ 12 - 2
mcs/class/Mono.Data/Provider.cs

@@ -24,18 +24,22 @@ namespace Mono.Data
 		private Type adapterType;
 		private Type commandType;
 		private string assemblyName;
+		private string description;
       
 		public Provider(string _name, string _connection, 
-			string _dataadapter, string _command, string _assembly)
+			string _dataadapter, string _command, string _assembly,
+			string _description)
 		{
 			name = _name;
 			connectionTypeName = _connection;
 			adapterTypeName = _dataadapter;
 			assemblyName = _assembly;
 			commandTypeName = _command;
+			description = _description;
 		}
 
-		public Provider(string _name, Type _connection, Type _dataadapter, Type _command)
+		public Provider(string _name, Type _connection, Type _dataadapter, Type _command,
+			string _description)
 		{
 			name = _name;
 			connectionTypeName = _connection.FullName;
@@ -44,6 +48,7 @@ namespace Mono.Data
 			connectionType = _connection;
 			adapterType = _dataadapter;
 			commandType = _command;
+			description = _description;
 		}
 
 		public string Name
@@ -51,6 +56,11 @@ namespace Mono.Data
 			get {return name;}
 		}
 
+		public string Description
+		{
+			get {return description;}
+		}
+
 		public Type ConnectionType
 		{
 			get 

+ 1 - 1
mcs/class/Mono.Data/ProviderCollection.cs

@@ -235,7 +235,7 @@ namespace Mono.Data
 			{
 				get 
 				{
-					return ((Provider)(baseEnumerator.Current));
+					return ((Provider) ((DictionaryEntry) (baseEnumerator.Current)).Value);
 				}
 			}
 			

+ 2 - 1
mcs/class/Mono.Data/ProviderSectionHandler.cs

@@ -26,7 +26,8 @@ namespace Mono.Data
 					GetStringValue(ProviderNode,"connection",true),
 					GetStringValue(ProviderNode,"adapter",true),
 					GetStringValue(ProviderNode,"command",true),
-					GetStringValue(ProviderNode,"assembly",true));
+					GetStringValue(ProviderNode,"assembly",true),
+					GetStringValue(ProviderNode,"description",false));
 				providers.Add(provider);
 			}
 			return providers;

+ 16 - 8
mcs/class/Mono.Data/app.config

@@ -15,48 +15,56 @@
 				connection="System.Data.SqlClient.SqlConnection" 
 				adapter="System.Data.SqlClient.SqlDataAdapter" 
 				command="System.Data.SqlClient.SqlCommand" 
-				assembly="System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
+				assembly="System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
+				description="Microsoft SQL Server 7.0/2000" />
 			<provider 
 				name="System.Data.OleDb" 
 				connection="System.Data.OleDb.OleDbConnection" 
 				adapter="System.Data.OleDb.OleDbDataAdapter" 
 				command="System.Data.OleDb.OleDbCommand" 
-				assembly="System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
+				assembly="System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
+				description="OLE DB" />
 			<provider 
 				name="System.Data.Odbc" 
 				connection="System.Data.Odbc.OdbcConnection" 
 				adapter="System.Data.Odbc.OdbcDataAdapter" 
 				command="System.Data.Odbc.OdbcCommand" 
-				assembly="odbc"/>
+				assembly="odbc"
+				description="ODBC" />
 			<provider 
 				name="Mono.Data.TdsClient" 
 				connection="Mono.Data.TdsClient.TdsConnection" 
 				adapter="Mono.Data.TdsClient.TdsDataAdapter" 
 				command="Mono.Data.TdsClient.TdsCommand" 
-				assembly="Mono.Data.TdsClient" />
+				assembly="Mono.Data.TdsClient"
+				description="TDS Generic" />
 			<provider name="Mono.Data.MySql" 
 				connection="Mono.Data.MySql.MySqlConnection" 
 				adapter="Mono.Data.MySql.MySqlDataAdapter" 
 				command="Mono.Data.MySql.MySqlCommand"
-				assembly="Mono.Data.MySql" />
+				assembly="Mono.Data.MySql"
+				description="MySQL" />
 			<provider 
 				name="Mono.Data.PostgreSqlClient" 
 				connection="Mono.Data.PostgreSqlClient.PgSqlConnection" 
 				adapter="Mono.Data.PostgreSqlClient.PgSqlDataAdapter" 
 				command="Mono.Data.PostgreSqlClient.PgSqlCommand" 
-				assembly="Mono.Data.PostgreSqlClient" />
+				assembly="Mono.Data.PostgreSqlClient"
+				description="PostgreSQL" />
 			<provider 
 				name="Mono.Data.SqliteClient" 
 				connection="Mono.Data.SqliteClient.SqliteConnection" 
 				adapter="Mono.Data.SqliteClient.SqliteDataAdapter" 
 				command="Mono.Data.SqliteClient.SqliteCommand" 
-				assembly="Mono.Data.SqliteClient" />
+				assembly="Mono.Data.SqliteClient"
+				description="SQL Lite" />
 			<provider 
 				name="Mono.Data.SybaseClient" 
 				connection="Mono.Data.SybaseClient.SybaseConnection" 
 				adapter="Mono.Data.SybaseClient.SybaseDataAdapter" 
 				command="Mono.Data.SybaseClient.SybaseCommand" 
-				assembly="Mono.Data.SybaseClient" />
+				assembly="Mono.Data.SybaseClient"
+				description="Sybase" />
 		</providers>
 	</mono.data>
 </configuration>

BIN
mcs/class/Mono.Data/test/Mono.Data.dll


+ 6 - 1
mcs/class/Mono.Data/test/test.cs

@@ -13,7 +13,12 @@ namespace testclient
 
 		public static void TestProviderFactory()
 		{
-			Console.WriteLine("Get Connection");
+		  	Console.WriteLine("Configured Providers:");	
+			foreach (Provider p in ProviderFactory.Providers)
+				Console.WriteLine(p.Description);
+			Console.WriteLine();
+			Console.WriteLine("Connection Factory Test:");	
+			Console.WriteLine("Get Connection using PubsConnStr in app.config");
 			IDbConnection conn=ProviderFactory.CreateConnectionFromConfig("PubsConnStr");
 		 	Console.WriteLine("Open Connection");	
 			conn.Open();

BIN
mcs/class/Mono.Data/test/test.exe


+ 16 - 8
mcs/class/Mono.Data/test/test.exe.config

@@ -15,48 +15,56 @@
 				connection="System.Data.SqlClient.SqlConnection" 
 				adapter="System.Data.SqlClient.SqlDataAdapter" 
 				command="System.Data.SqlClient.SqlCommand" 
-				assembly="System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
+				assembly="System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
+				description="Microsoft SQL Server 7.0/2000" />
 			<provider 
 				name="System.Data.OleDb" 
 				connection="System.Data.OleDb.OleDbConnection" 
 				adapter="System.Data.OleDb.OleDbDataAdapter" 
 				command="System.Data.OleDb.OleDbCommand" 
-				assembly="System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
+				assembly="System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
+				description="OLE DB" />
 			<provider 
 				name="System.Data.Odbc" 
 				connection="System.Data.Odbc.OdbcConnection" 
 				adapter="System.Data.Odbc.OdbcDataAdapter" 
 				command="System.Data.Odbc.OdbcCommand" 
-				assembly="odbc"/>
+				assembly="odbc"
+				description="ODBC" />
 			<provider 
 				name="Mono.Data.TdsClient" 
 				connection="Mono.Data.TdsClient.TdsConnection" 
 				adapter="Mono.Data.TdsClient.TdsDataAdapter" 
 				command="Mono.Data.TdsClient.TdsCommand" 
-				assembly="Mono.Data.TdsClient" />
+				assembly="Mono.Data.TdsClient"
+				description="TDS Generic" />
 			<provider name="Mono.Data.MySql" 
 				connection="Mono.Data.MySql.MySqlConnection" 
 				adapter="Mono.Data.MySql.MySqlDataAdapter" 
 				command="Mono.Data.MySql.MySqlCommand"
-				assembly="Mono.Data.MySql" />
+				assembly="Mono.Data.MySql"
+				description="MySQL" />
 			<provider 
 				name="Mono.Data.PostgreSqlClient" 
 				connection="Mono.Data.PostgreSqlClient.PgSqlConnection" 
 				adapter="Mono.Data.PostgreSqlClient.PgSqlDataAdapter" 
 				command="Mono.Data.PostgreSqlClient.PgSqlCommand" 
-				assembly="Mono.Data.PostgreSqlClient" />
+				assembly="Mono.Data.PostgreSqlClient"
+				description="PostgreSQL" />
 			<provider 
 				name="Mono.Data.SqliteClient" 
 				connection="Mono.Data.SqliteClient.SqliteConnection" 
 				adapter="Mono.Data.SqliteClient.SqliteDataAdapter" 
 				command="Mono.Data.SqliteClient.SqliteCommand" 
-				assembly="Mono.Data.SqliteClient" />
+				assembly="Mono.Data.SqliteClient"
+				description="SQL Lite" />
 			<provider 
 				name="Mono.Data.SybaseClient" 
 				connection="Mono.Data.SybaseClient.SybaseConnection" 
 				adapter="Mono.Data.SybaseClient.SybaseDataAdapter" 
 				command="Mono.Data.SybaseClient.SybaseCommand" 
-				assembly="Mono.Data.SybaseClient" />
+				assembly="Mono.Data.SybaseClient"
+				description="Sybase" />
 		</providers>
 	</mono.data>
 </configuration>