Files
VAR.DatabaseExplorer/VAR.DatabaseExplorer/UI/FrmBaseDatos.cs

148 lines
5.2 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using VAR.DatabaseExplorer.Code.BusinessLogic;
using VAR.DatabaseExplorer.Code.DataAccess;
using VAR.DatabaseExplorer.Code.DataTransfer;
namespace VAR.DatabaseExplorer.UI
{
public partial class FrmBaseDatos : Form
{
private string _connectionString;
private string _tableSchema;
private string _tableName;
private void Initialize()
{
List<Table> tables = TableBL.Table_GetAll(_connectionString);
lsvTablas.Items.Clear();
foreach (Table table in tables)
{
ListViewItem item = lsvTablas.Items.Add(table.Schema);
item.SubItems.Add(table.Name);
item.SubItems.Add(table.Type);
}
lsvColumnas.Items.Clear();
}
public FrmBaseDatos(string connectionString)
{
InitializeComponent();
_connectionString = connectionString;
txtConString.Text = connectionString;
}
private void frmBaseDatos_Load(object sender, EventArgs e)
{
Initialize();
Database database = DatabaseBL.Database_Get(_connectionString);
lblTituloDB.Text = database.Name;
lblTituloTabla.Text = "";
}
private void btnCopiarConString_Click(object sender, EventArgs e)
{
Clipboard.SetText(txtConString.Text);
}
private void lsvTablas_SelectedIndexChanged(object sender, EventArgs e)
{
if (lsvTablas.SelectedItems.Count != 1) { return; }
ListViewItem item = lsvTablas.SelectedItems[0];
_tableSchema = item.SubItems[0].Text;
_tableName = item.SubItems[1].Text;
lblTituloTabla.Text = _tableSchema + @"." + _tableName;
List<Column> columns = ColumnDA.GetColumns(_connectionString, _tableSchema, _tableName);
lsvColumnas.Items.Clear();
foreach (Column col in columns)
{
ListViewItem subitem = lsvColumnas.Items.Add(col.Name);
string type = string.Format("{0}{1}", col.Type, col.Size > 0 ? string.Format("({0})", col.Size) : string.Empty);
subitem.SubItems.Add(type);
subitem.SubItems.Add(col.PK ? "PK" : string.Empty);
subitem.SubItems.Add(col.Nullable ? "Null" : "NotNull");
}
}
private void btnVerDatos_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(_tableSchema) || string.IsNullOrEmpty(_tableName)) { return; }
var form = new FrmDatos(_connectionString, _tableSchema, _tableName);
FrmPrincipal.AddForm(form);
}
private void btnProcs_Click(object sender, EventArgs e)
{
var form = new FrmProcedimientos(_connectionString);
FrmPrincipal.AddForm(form);
}
private void btnExec_Click(object sender, EventArgs e)
{
var form = new FrmExec(_connectionString);
FrmPrincipal.AddForm(form);
}
private void btnDocGen_Click(object sender, EventArgs e)
{
Parent.Enabled = false;
Database database = DatabaseBL.Database_GetSchema(connectionString: _connectionString, fillTableDefinitions: true, fillProcDefinitions: true);
string fixedDatabaseName = database.Name.Replace(' ', '_');
var streamWriter = new StreamWriter(fixedDatabaseName + ".documentation.html");
DatabaseBL.Database_GenerateDocumentation(streamWriter, database);
streamWriter.Close();
Parent.Enabled = true;
}
private void btnRefresh_Click(object sender, EventArgs e)
{
Initialize();
}
private void btnExportData_Click(object sender, EventArgs e)
{
Parent.Enabled = false;
Database database = DatabaseBL.Database_GetSchema(connectionString: _connectionString, fillTableDefinitions: true);
string fixedDatabaseName = database.Name.Replace(' ', '_');
var streamWriter = new StreamWriter(fixedDatabaseName + ".Data.sql");
DatabaseBL.Database_ExportData(streamWriter, _connectionString, database);
streamWriter.Close();
Parent.Enabled = true;
}
private void BtnExportSchema_Click(object sender, EventArgs e)
{
Parent.Enabled = false;
Database database = DatabaseBL.Database_GetSchema(connectionString: _connectionString, fillTableDefinitions: true, fillProcDefinitions: true);
string fixedDatabaseName = database.Name.Replace(' ', '_');
// Tables
var streamWriterTables = new StreamWriter(fixedDatabaseName + ".Tables.sql");
DatabaseBL.Database_ExportTables(streamWriterTables, _connectionString, database);
streamWriterTables.Close();
// Routines
var streamWriterRoutines = new StreamWriter(fixedDatabaseName + ".Routines.sql");
DatabaseBL.Database_ExportFunctions(streamWriterRoutines, database);
streamWriterRoutines.Close();
// TODO Views
Parent.Enabled = true;
}
}
}