diff --git a/src/AddIns/Misc/SharpDbTools/Project/SharpDbTools.csproj b/src/AddIns/Misc/SharpDbTools/Project/SharpDbTools.csproj
index 786c56d0e7..6fbf45f819 100644
--- a/src/AddIns/Misc/SharpDbTools/Project/SharpDbTools.csproj
+++ b/src/AddIns/Misc/SharpDbTools/Project/SharpDbTools.csproj
@@ -70,6 +70,13 @@
GetConnectionLogicalNameDialog.cs
+
+ TableDescribeForm.cs
+
+
+
+ TableDescribeForm.cs
+
diff --git a/src/AddIns/Misc/SharpDbTools/Project/Src/Model/ColumnNames.cs b/src/AddIns/Misc/SharpDbTools/Project/Src/Model/ColumnNames.cs
index b393cb17d6..3a63ee13f8 100644
--- a/src/AddIns/Misc/SharpDbTools/Project/Src/Model/ColumnNames.cs
+++ b/src/AddIns/Misc/SharpDbTools/Project/Src/Model/ColumnNames.cs
@@ -24,5 +24,6 @@ namespace SharpDbTools.Model
public const string InvariantName = "invariantName";
public const string Name = "name";
public const string ConnectionString = "connectionString";
+ public const string TableName = "TABLE_NAME";
}
}
diff --git a/src/AddIns/Misc/SharpDbTools/Project/Src/Model/DbModelInfoService.cs b/src/AddIns/Misc/SharpDbTools/Project/Src/Model/DbModelInfoService.cs
index 3c84f7ee0f..1b45992a73 100644
--- a/src/AddIns/Misc/SharpDbTools/Project/Src/Model/DbModelInfoService.cs
+++ b/src/AddIns/Misc/SharpDbTools/Project/Src/Model/DbModelInfoService.cs
@@ -71,6 +71,25 @@ namespace SharpDbTools.Model
bool exists = cache.TryGetValue(name, out modelInfo);
return modelInfo;
}
+
+ public static DataTable GetTableInfo(string modelName, string tableName)
+ {
+ LoggingService.Debug("-->GetTableInfo");
+ DbModelInfo modelInfo = GetDbModelInfo(modelName);
+ DataTable columnTable = modelInfo.Tables[TableNames.Columns];
+ DataRow[] columnsMetadata = columnTable.Select(ColumnNames.TableName + "='" + tableName + "'");
+ LoggingService.Debug("found: " + columnsMetadata.Length + " columns belonging to table: " + tableName);
+ DataTable tableInfo = columnTable.Copy();
+ tableInfo.Clear();
+ foreach (DataRow r in columnsMetadata) {
+ DataRow newRow = tableInfo.NewRow();
+ newRow.ItemArray = r.ItemArray;
+ tableInfo.Rows.Add(newRow);
+ tableInfo.AcceptChanges();
+ }
+ return tableInfo;
+
+ }
public static DbModelInfo LoadMetadataFromConnection(string name)
{
diff --git a/src/AddIns/Misc/SharpDbTools/Project/Src/Model/TableNames.cs b/src/AddIns/Misc/SharpDbTools/Project/Src/Model/TableNames.cs
index 732dc376e5..b08b7bcbcc 100644
--- a/src/AddIns/Misc/SharpDbTools/Project/Src/Model/TableNames.cs
+++ b/src/AddIns/Misc/SharpDbTools/Project/Src/Model/TableNames.cs
@@ -24,5 +24,6 @@ namespace SharpDbTools.Model
public const string MetaDataCollections = "MetaDataCollections";
public const string ConnectionInfo = "ConnectionInfo";
public static string[] PrimaryObjects = new string[] { "Tables", "Procedures", "Functions", "Views", "Users" };
+ public static string Columns = "Columns";
}
}
diff --git a/src/AddIns/Misc/SharpDbTools/Project/Src/ServerBrowserTool.cs b/src/AddIns/Misc/SharpDbTools/Project/Src/ServerBrowserTool.cs
index 325c7e224f..e3046f37dd 100644
--- a/src/AddIns/Misc/SharpDbTools/Project/Src/ServerBrowserTool.cs
+++ b/src/AddIns/Misc/SharpDbTools/Project/Src/ServerBrowserTool.cs
@@ -21,6 +21,7 @@ using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using SharpDbTools.Model;
using SharpDbTools.Connection;
+using SharpDbTools.Viewer;
namespace SharpDbTools
{
@@ -147,6 +148,7 @@ namespace SharpDbTools
public TreeNode CreateDbModelInfoNode(string name)
{
TreeNode treeNode = new TreeNode(name);
+ treeNode.Tag = "ConnectionRoot";
// create and add the menustrip for this node
NodeAwareContextMenuStrip cMenu = new NodeAwareContextMenuStrip(treeNode);
@@ -317,6 +319,9 @@ namespace SharpDbTools
ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
NodeAwareContextMenuStrip toolStrip = menuItem.Owner as NodeAwareContextMenuStrip;
TreeNode node = toolStrip.TreeNode;
+ while ((node.Tag == null) || (!node.Tag.Equals("ConnectionRoot"))) {
+ node = node.Parent;
+ }
string connectionLogicalName = node.Text;
return connectionLogicalName;
}
@@ -370,7 +375,14 @@ namespace SharpDbTools
public void DescribeTableClickHandler(object sender, EventArgs args)
{
- LoggingService.Debug("describe table clicked for: ");
+ string logicalConnectionName = getConnectionName(sender);
+ ToolStripMenuItem item = sender as ToolStripMenuItem;
+ NodeAwareContextMenuStrip s = item.Owner as NodeAwareContextMenuStrip;
+ string tableName = s.TreeNode.Text;
+ LoggingService.Debug("describe table clicked for: " + logicalConnectionName + " and table name: " + tableName);
+ DataTable tableInfo = DbModelInfoService.GetTableInfo(logicalConnectionName, tableName);
+ TableDescribeForm describeForm = new TableDescribeForm(tableInfo);
+ describeForm.Show();
}
}