Browse Source

Added basic Describe functionality for Table metadata

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1750 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Dickon Field 20 years ago
parent
commit
ac398119aa
  1. 7
      src/AddIns/Misc/SharpDbTools/Project/SharpDbTools.csproj
  2. 1
      src/AddIns/Misc/SharpDbTools/Project/Src/Model/ColumnNames.cs
  3. 19
      src/AddIns/Misc/SharpDbTools/Project/Src/Model/DbModelInfoService.cs
  4. 1
      src/AddIns/Misc/SharpDbTools/Project/Src/Model/TableNames.cs
  5. 14
      src/AddIns/Misc/SharpDbTools/Project/Src/ServerBrowserTool.cs

7
src/AddIns/Misc/SharpDbTools/Project/SharpDbTools.csproj

@ -70,6 +70,13 @@ @@ -70,6 +70,13 @@
<EmbeddedResource Include="Src\GetConnectionLogicalNameDialog.resx">
<DependentUpon>GetConnectionLogicalNameDialog.cs</DependentUpon>
</EmbeddedResource>
<Compile Include="Src\Viewer\TableDescribeForm.Designer.cs">
<DependentUpon>TableDescribeForm.cs</DependentUpon>
</Compile>
<Compile Include="Src\Viewer\TableDescribeForm.cs" />
<EmbeddedResource Include="Src\Viewer\TableDescribeForm.resx">
<DependentUpon>TableDescribeForm.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Folder Include="Src\Model" />

1
src/AddIns/Misc/SharpDbTools/Project/Src/Model/ColumnNames.cs

@ -24,5 +24,6 @@ namespace SharpDbTools.Model @@ -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";
}
}

19
src/AddIns/Misc/SharpDbTools/Project/Src/Model/DbModelInfoService.cs

@ -71,6 +71,25 @@ namespace SharpDbTools.Model @@ -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)
{

1
src/AddIns/Misc/SharpDbTools/Project/Src/Model/TableNames.cs

@ -24,5 +24,6 @@ namespace SharpDbTools.Model @@ -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";
}
}

14
src/AddIns/Misc/SharpDbTools/Project/Src/ServerBrowserTool.cs

@ -21,6 +21,7 @@ using ICSharpCode.Core; @@ -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 @@ -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 @@ -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 @@ -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();
}
}

Loading…
Cancel
Save