diff --git a/src/AddIns/Misc/SharpServerTools/OracleDbToolsProvider/Src/Forms/OracleFormsArtefactFactory.cs b/src/AddIns/Misc/SharpServerTools/OracleDbToolsProvider/Src/Forms/OracleFormsArtefactFactory.cs index b3404ac870..1eb84d6226 100644 --- a/src/AddIns/Misc/SharpServerTools/OracleDbToolsProvider/Src/Forms/OracleFormsArtefactFactory.cs +++ b/src/AddIns/Misc/SharpServerTools/OracleDbToolsProvider/Src/Forms/OracleFormsArtefactFactory.cs @@ -57,23 +57,23 @@ namespace SharpDbTools.Oracle.Forms metaNode.Nodes.Add(collectionNode); foreach (DataRow dbObjectRow in metaCollectionTable.Rows) { TreeNode objectNode = null; - if (dbObjectRow.ItemArray.Length > 1) { - - // if it is a table metadata collection then create a node - // with the option to invoke the DescribeTableViewContent - - if (metadataCollectionName.Equals("Tables")) { - objectNode = new TableTreeNode((string)dbObjectRow[1], logicalConnectionName); - } else { - - // TODO: describe other metadata collections - - objectNode = new TreeNode((string)dbObjectRow[1]); - } - objectNode.Name = logicalConnectionName + ":Object:" + (string)dbObjectRow[1]; - } else { - objectNode = new TreeNode((string)dbObjectRow[0]); - objectNode.Name = logicalConnectionName + ":Object:" + (string)dbObjectRow[0]; + switch(metadataCollectionName) { + case "Tables": + LoggingService.Debug("found table row"); + objectNode = new TableTreeNode((string)dbObjectRow[1], logicalConnectionName); + break; + case "Users": + LoggingService.Debug("found users row"); + objectNode = new TreeNode((string)dbObjectRow[0]); + break; + default: + LoggingService.Debug("found " + metadataCollectionName + " row"); + if (dbObjectRow.ItemArray.Length > 1) { + objectNode = new TreeNode((string)dbObjectRow[1]); + } else { + objectNode = new TreeNode((string)dbObjectRow[0]); + } + break; } collectionNode.Nodes.Add(objectNode); } diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/DbProvidersService.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/DbProvidersService.cs index 6cb733edce..86733a938f 100644 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/DbProvidersService.cs +++ b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Data/DbProvidersService.cs @@ -9,6 +9,7 @@ using System; using System.Collections.Generic; using System.Data; using System.Data.Common; +using System.Windows.Forms; using ICSharpCode.Core; @@ -47,11 +48,20 @@ namespace SharpDbTools.Data LoggingService.Debug("adding lookup for: " + name + " to: + " + invariantName); invariantByNameLookup.Add(name, invariantName); //factoryData.Add(name, row); - LoggingService.Debug("retrieving DbProviderFactory for Name: " + name + " InvariantName: " + invariantName); - DbProviderFactory factory = DbProviderFactories.GetFactory(row); - names.Add(name); - factories.Add(name, factory); - factoriesByInvariantName.Add(invariantName, factory); + try { + LoggingService.Debug("retrieving DbProviderFactory for Name: " + + name + " InvariantName: " + invariantName); + DbProviderFactory factory = DbProviderFactories.GetFactory(row); + names.Add(name); + factories.Add(name, factory); + factoriesByInvariantName.Add(invariantName, factory); + } catch (Exception) { + MessageBox.Show("Unable to load DbProviderFactory for: " + name + ", this will be unavailable." + + "\nCheck *.config files for invalid ado.net config elements, or config" + + "for assemblies that are not available.", + "Exception loading DbProviderFactory", MessageBoxButtons.OK, + MessageBoxIcon.Error); + } } initialized = true;