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 @@
<EmbeddedResource Include="Src\GetConnectionLogicalNameDialog.resx"> <EmbeddedResource Include="Src\GetConnectionLogicalNameDialog.resx">
<DependentUpon>GetConnectionLogicalNameDialog.cs</DependentUpon> <DependentUpon>GetConnectionLogicalNameDialog.cs</DependentUpon>
</EmbeddedResource> </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>
<ItemGroup> <ItemGroup>
<Folder Include="Src\Model" /> <Folder Include="Src\Model" />

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

@ -24,5 +24,6 @@ namespace SharpDbTools.Model
public const string InvariantName = "invariantName"; public const string InvariantName = "invariantName";
public const string Name = "name"; public const string Name = "name";
public const string ConnectionString = "connectionString"; 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
bool exists = cache.TryGetValue(name, out modelInfo); bool exists = cache.TryGetValue(name, out modelInfo);
return 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) public static DbModelInfo LoadMetadataFromConnection(string name)
{ {

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

@ -24,5 +24,6 @@ namespace SharpDbTools.Model
public const string MetaDataCollections = "MetaDataCollections"; public const string MetaDataCollections = "MetaDataCollections";
public const string ConnectionInfo = "ConnectionInfo"; public const string ConnectionInfo = "ConnectionInfo";
public static string[] PrimaryObjects = new string[] { "Tables", "Procedures", "Functions", "Views", "Users" }; 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;
using ICSharpCode.SharpDevelop.Gui; using ICSharpCode.SharpDevelop.Gui;
using SharpDbTools.Model; using SharpDbTools.Model;
using SharpDbTools.Connection; using SharpDbTools.Connection;
using SharpDbTools.Viewer;
namespace SharpDbTools namespace SharpDbTools
{ {
@ -147,6 +148,7 @@ namespace SharpDbTools
public TreeNode CreateDbModelInfoNode(string name) public TreeNode CreateDbModelInfoNode(string name)
{ {
TreeNode treeNode = new TreeNode(name); TreeNode treeNode = new TreeNode(name);
treeNode.Tag = "ConnectionRoot";
// create and add the menustrip for this node // create and add the menustrip for this node
NodeAwareContextMenuStrip cMenu = new NodeAwareContextMenuStrip(treeNode); NodeAwareContextMenuStrip cMenu = new NodeAwareContextMenuStrip(treeNode);
@ -317,6 +319,9 @@ namespace SharpDbTools
ToolStripMenuItem menuItem = sender as ToolStripMenuItem; ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
NodeAwareContextMenuStrip toolStrip = menuItem.Owner as NodeAwareContextMenuStrip; NodeAwareContextMenuStrip toolStrip = menuItem.Owner as NodeAwareContextMenuStrip;
TreeNode node = toolStrip.TreeNode; TreeNode node = toolStrip.TreeNode;
while ((node.Tag == null) || (!node.Tag.Equals("ConnectionRoot"))) {
node = node.Parent;
}
string connectionLogicalName = node.Text; string connectionLogicalName = node.Text;
return connectionLogicalName; return connectionLogicalName;
} }
@ -370,7 +375,14 @@ namespace SharpDbTools
public void DescribeTableClickHandler(object sender, EventArgs args) 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