From 4b5ce5b834d92df9958ce5e24373ab57895d2d90 Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Sun, 4 Mar 2018 22:27:29 +0100 Subject: [PATCH] Remove old code, with data objects and business objects joined. --- .../Code/BusinessLogic/DatabaseBL.cs | 90 +++++- .../BusinessLogic/DocumentationGeneratorBL.cs | 44 --- .../Code/BusinessLogic/ProcedureBL.cs | 23 ++ .../Code/BusinessLogic/TableBL.cs | 43 ++- VAR.DatabaseExplorer/Code/Config.cs | 68 ----- .../Code/DataAccess/DatabaseDA.cs | 29 +- .../Code/DataAccess/ProcedureDA.cs | 10 +- .../Code/DataAccess/TableDA.cs | 18 +- VAR.DatabaseExplorer/Code/DataTableHelper.cs | 33 ++- VAR.DatabaseExplorer/Code/DatabaseDesc.cs | 22 -- VAR.DatabaseExplorer/Code/TablaDesc.cs | 280 ------------------ .../UI/FrmBaseDatos.Designer.cs | 76 +---- VAR.DatabaseExplorer/UI/FrmBaseDatos.cs | 270 +++-------------- VAR.DatabaseExplorer/UI/FrmBaseDatos.resx | 8 +- VAR.DatabaseExplorer/UI/FrmDatos.cs | 15 +- VAR.DatabaseExplorer/UI/FrmExec.cs | 6 +- .../UI/FrmPrincipal.Designer.cs | 32 +- VAR.DatabaseExplorer/UI/FrmPrincipal.cs | 28 +- VAR.DatabaseExplorer/UI/FrmServidores.cs | 27 +- .../VAR.DatabaseExplorer.csproj | 5 +- 20 files changed, 272 insertions(+), 855 deletions(-) delete mode 100644 VAR.DatabaseExplorer/Code/BusinessLogic/DocumentationGeneratorBL.cs create mode 100644 VAR.DatabaseExplorer/Code/BusinessLogic/ProcedureBL.cs delete mode 100644 VAR.DatabaseExplorer/Code/Config.cs delete mode 100644 VAR.DatabaseExplorer/Code/DatabaseDesc.cs delete mode 100644 VAR.DatabaseExplorer/Code/TablaDesc.cs diff --git a/VAR.DatabaseExplorer/Code/BusinessLogic/DatabaseBL.cs b/VAR.DatabaseExplorer/Code/BusinessLogic/DatabaseBL.cs index 5209e2c..0b69074 100644 --- a/VAR.DatabaseExplorer/Code/BusinessLogic/DatabaseBL.cs +++ b/VAR.DatabaseExplorer/Code/BusinessLogic/DatabaseBL.cs @@ -1,12 +1,94 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.IO; +using VAR.DatabaseExplorer.Code.DataAccess; +using VAR.DatabaseExplorer.Code.DataTransfer; namespace VAR.DatabaseExplorer.Code.BusinessLogic { public class DatabaseBL { + internal static Database Database_Get(string connectionString) + { + Database database = DatabaseDA.GetInfo(connectionString); + return database; + } + + public static Database Database_GetSchema(string connectionString, bool fillDefinitions = false) + { + Database database = DatabaseDA.GetInfo(connectionString); + database.Tables = TableBL.Table_GetAll(connectionString, fillDefinitions); + database.Procedures = ProcedureBL.Procedure_GetAll(connectionString, fillDefinitions); + return database; + } + + public static void Database_GenerateDocumentation(TextWriter txtWriter, Database database) + { + // Poner cabecera de la documentacion + txtWriter.WriteLine(""); + txtWriter.WriteLine("" + database.Name + ""); + txtWriter.WriteLine(""); + + // Iterar cada tabla + foreach (Table table in database.Tables) + { + // Cabecera de la info de tabla + txtWriter.WriteLine("

" + table.Schema + "." + table.Name + "

"); + + // Iterar las columnas + txtWriter.WriteLine(""); + txtWriter.WriteLine(""); + txtWriter.WriteLine(""); + foreach (Column c in table.Columns) + { + txtWriter.WriteLine(""); + } + txtWriter.WriteLine("
NombreTipoTamañoPrimaria
" + + c.Name + "" + + c.Type + "" + + c.Size + "" + + c.PK + "
"); + } + + // Iterar cada procedimiento + foreach (Procedure proc in database.Procedures) + { + // Cabecera de la info del procedimiento + txtWriter.WriteLine("

" + proc.Schema + "." + proc.Name + "

"); + + txtWriter.WriteLine("
");
+                txtWriter.WriteLine(proc.Definition);
+                txtWriter.WriteLine("
"); + } + + // Poner pie y cerrar fichero + txtWriter.WriteLine(""); + } + + public static void Database_ExportData(TextWriter txtWriter, string connectionString, Database database) + { + // Preparar cabecera del script + txtWriter.WriteLine("SET NOCOUNT ON;"); + txtWriter.WriteLine(string.Empty); + + // Desactivar todas las FKs + txtWriter.WriteLine("-- Disable all constraints"); + txtWriter.WriteLine("EXEC sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'"); + txtWriter.WriteLine("GO"); + txtWriter.WriteLine(string.Empty); + + // Prepara informacion a exportar + foreach (Table t in database.Tables) + { + string tableName = string.Format("{0}.{1}", t.Schema, t.Name); + txtWriter.WriteLine(string.Format("PRINT '*** Importing data of {0}....';", tableName)); + TableBL.Table_ExportData(txtWriter, connectionString, tableName); + } + + // Activar todas las FKs + txtWriter.WriteLine("-- Enable all constraints"); + txtWriter.WriteLine("EXEC sp_MSforeachtable @command1='print ''?''', @command2='ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all'"); + txtWriter.WriteLine("GO"); + txtWriter.WriteLine(string.Empty); + } } } diff --git a/VAR.DatabaseExplorer/Code/BusinessLogic/DocumentationGeneratorBL.cs b/VAR.DatabaseExplorer/Code/BusinessLogic/DocumentationGeneratorBL.cs deleted file mode 100644 index 17120cb..0000000 --- a/VAR.DatabaseExplorer/Code/BusinessLogic/DocumentationGeneratorBL.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System.IO; - -namespace VAR.DatabaseExplorer.Code.BusinessLogic -{ - public class DocumentationGeneratorBL - { - public static void GenerateDocumentation(DatabaseDesc database) - { - // Abrir el documento que contendra la documentacion - string fixedDatabaseName = database.Nombre.Replace(' ', '_'); - var escritor = new StreamWriter(fixedDatabaseName + ".documentacion.html"); - - // Poner cabecera de la documentacion - escritor.WriteLine(""); - escritor.WriteLine("" + database.Nombre + ""); - escritor.WriteLine(""); - - // Iterar cada tabla - foreach (TablaDesc t in database.Tablas) - { - // Cabecera de la info de tabla - escritor.WriteLine("

" + t.Esquema + "." + t.Nombre + "

"); - - // Iterar las columnas - escritor.WriteLine(""); - escritor.WriteLine(""); - escritor.WriteLine(""); - foreach (ColumnaDesc c in t.Columnas) - { - escritor.WriteLine(""); - } - escritor.WriteLine("
NombreTipoTamañoPrimaria
" + - c.Nombre + "" + - c.Tipo + "" + - c.Tamanho + "" + - c.Primaria + "
"); - } - - // Poner pie y cerrar fichero - escritor.WriteLine(""); - escritor.Close(); - } - } -} diff --git a/VAR.DatabaseExplorer/Code/BusinessLogic/ProcedureBL.cs b/VAR.DatabaseExplorer/Code/BusinessLogic/ProcedureBL.cs new file mode 100644 index 0000000..5d46352 --- /dev/null +++ b/VAR.DatabaseExplorer/Code/BusinessLogic/ProcedureBL.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using VAR.DatabaseExplorer.Code.DataAccess; +using VAR.DatabaseExplorer.Code.DataTransfer; + +namespace VAR.DatabaseExplorer.Code.BusinessLogic +{ + public class ProcedureBL + { + public static List Procedure_GetAll(string connectionString, bool fillDefinition = false) + { + List procedures = ProcedureDA.GetAllProcedures(connectionString); + if (fillDefinition) + { + foreach (Procedure procedure in procedures) + { + procedure.Definition = ProcedureDA.GetProcedureDefinition(connectionString, procedure.Schema, procedure.Name); + } + } + return procedures; + } + + } +} diff --git a/VAR.DatabaseExplorer/Code/BusinessLogic/TableBL.cs b/VAR.DatabaseExplorer/Code/BusinessLogic/TableBL.cs index c4014d6..3bba707 100644 --- a/VAR.DatabaseExplorer/Code/BusinessLogic/TableBL.cs +++ b/VAR.DatabaseExplorer/Code/BusinessLogic/TableBL.cs @@ -1,28 +1,39 @@ using System.Collections.Generic; using System.Data; +using System.IO; using VAR.DatabaseExplorer.Code.DataAccess; +using VAR.DatabaseExplorer.Code.DataTransfer; namespace VAR.DatabaseExplorer.Code.BusinessLogic { public class TableBL { - public static List ExportData(string conectionString, string tableName) + public static List Table_GetAll(string connectionString, bool fillColumns = false) { - DataTable dtData = TableDA.GetData(conectionString, tableName); - - var listCmds = new List(); - List listCmdsInsert = DataTableHelper.DataTable_GenerateInserts(dtData, tableName); - - listCmds.Add(string.Format("-- {0}", tableName)); - listCmds.Add(string.Format("DELETE FROM {0};", tableName)); - listCmds.Add(string.Format("DBCC CHECKIDENT ('{0}', RESEED, 0);", tableName)); - listCmds.Add(string.Format("SET IDENTITY_INSERT {0} ON;", tableName)); - listCmds.AddRange(listCmdsInsert); - listCmds.Add(string.Format("SET IDENTITY_INSERT {0} OFF;", tableName)); - listCmds.Add("GO"); - listCmds.Add(string.Empty); - - return listCmds; + List
tables = TableDA.GetAllTables(connectionString); + if (fillColumns) + { + foreach(Table table in tables) + { + table.Columns = ColumnDA.GetColumns(connectionString, table.Schema, table.Name); + } + } + return tables; } + + public static void Table_ExportData(TextWriter txtWriter, string conectionString, string tableFullName) + { + DataTable dtData = TableDA.GetData(conectionString, tableFullName); + + txtWriter.WriteLine(string.Format("-- {0}", tableFullName)); + txtWriter.WriteLine(string.Format("DELETE FROM {0};", tableFullName)); + txtWriter.WriteLine(string.Format("DBCC CHECKIDENT ('{0}', RESEED, 0);", tableFullName)); + txtWriter.WriteLine(string.Format("SET IDENTITY_INSERT {0} ON;", tableFullName)); + DataTableHelper.DataTable_GenerateInserts(txtWriter, dtData, tableFullName); + txtWriter.WriteLine(string.Format("SET IDENTITY_INSERT {0} OFF;", tableFullName)); + txtWriter.WriteLine("GO"); + txtWriter.WriteLine(string.Empty); + } + } } diff --git a/VAR.DatabaseExplorer/Code/Config.cs b/VAR.DatabaseExplorer/Code/Config.cs deleted file mode 100644 index a25f5b8..0000000 --- a/VAR.DatabaseExplorer/Code/Config.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Xml.Serialization; - -namespace VAR.DatabaseExplorer.Code -{ - [Serializable] - public class Config - { - #region Data parameters - - private string _conString = ""; - [XmlAttribute("ConnectionString")] - public string ConnectionString - { - get { return _conString; } - set { _conString = value; } - } - - private readonly List _tablas = new List(); - [XmlArray("Tablas")] - public List Tablas { get { return _tablas; } } - - #endregion - - #region Persistence methods - - public void Guardar(String fichero) - { - var seriador = new XmlSerializer(typeof(Config)); - var escritor = new StreamWriter(fichero); - seriador.Serialize(escritor, this); - escritor.Close(); - } - - public static Config Cargar(String fichero) - { - var seriador = new XmlSerializer(typeof(Config)); - var lector = new StreamReader(fichero); - var config = (Config)seriador.Deserialize(lector); - lector.Close(); - return config; - } - - #endregion - } - - [Serializable] - public class TablaInfo - { - private string _esquema = string.Empty; - [XmlAttribute("Esquema")] - public string Esquema - { - get { return _esquema; } - set { _esquema = value; } - } - - private string _nombre = string.Empty; - [XmlAttribute("Nombre")] - public string Nombre - { - get { return _nombre; } - set { _nombre = value; } - } - } -} \ No newline at end of file diff --git a/VAR.DatabaseExplorer/Code/DataAccess/DatabaseDA.cs b/VAR.DatabaseExplorer/Code/DataAccess/DatabaseDA.cs index 5718bb3..0c468de 100644 --- a/VAR.DatabaseExplorer/Code/DataAccess/DatabaseDA.cs +++ b/VAR.DatabaseExplorer/Code/DataAccess/DatabaseDA.cs @@ -8,10 +8,10 @@ namespace VAR.DatabaseExplorer.Code.DataAccess { public class DatabaseDA { - public static List GetAllDatabases(string conexionString) + public static List GetAllDatabases(string connectionString) { var databases = new List(); - var cnx = new SqlConnection(conexionString); + var cnx = new SqlConnection(connectionString); cnx.Open(); DataTable dt = cnx.GetSchema("Databases"); @@ -29,5 +29,30 @@ namespace VAR.DatabaseExplorer.Code.DataAccess } return databases; } + + + public static Database GetInfo(string connectionString) + { + var cnx = new SqlConnection(connectionString); + string strCmd = string.Format(@" + SELECT + [name] DatabaseName, + [create_date] CreateDate + FROM sys.databases + WHERE database_id = DB_ID(); + "); + var da = new SqlDataAdapter(strCmd, cnx); + var dt = new DataTable(); + cnx.Open(); + da.Fill(dt); + cnx.Close(); + + var database = new Database + { + Name = Convert.ToString(dt.Rows[0]["DatabaseName"]), + CreateDate = Convert.ToDateTime(dt.Rows[0]["CreateDate"]), + }; + return database; + } } } diff --git a/VAR.DatabaseExplorer/Code/DataAccess/ProcedureDA.cs b/VAR.DatabaseExplorer/Code/DataAccess/ProcedureDA.cs index 69fe1b5..67f2cc2 100644 --- a/VAR.DatabaseExplorer/Code/DataAccess/ProcedureDA.cs +++ b/VAR.DatabaseExplorer/Code/DataAccess/ProcedureDA.cs @@ -2,19 +2,17 @@ using System.Collections.Generic; using System.Data; using System.Data.SqlClient; -using System.Linq; using System.Text; -using System.Threading.Tasks; using VAR.DatabaseExplorer.Code.DataTransfer; namespace VAR.DatabaseExplorer.Code.DataAccess { public class ProcedureDA { - public static List GetAllProcedures(string conexionString) + public static List GetAllProcedures(string connectionString) { var procedures = new List(); - var cnx = new SqlConnection(conexionString); + var cnx = new SqlConnection(connectionString); var da = new SqlDataAdapter( "SELECT ROUTINE_NAME Name, ROUTINE_SCHEMA [Schema], CREATED CreateDate, ROUTINE_TYPE [Type] FROM INFORMATION_SCHEMA.ROUTINES", @@ -37,10 +35,10 @@ namespace VAR.DatabaseExplorer.Code.DataAccess return procedures; } - public static string GetProcedureDefinition(string conexionString, string schema, string name) + public static string GetProcedureDefinition(string connectionString, string schema, string name) { SqlDataAdapter dataAdapter; - var cnx = new SqlConnection(conexionString); + var cnx = new SqlConnection(connectionString); cnx.Open(); if (cnx.ServerVersion.StartsWith("10.") || cnx.ServerVersion.StartsWith("11.")) diff --git a/VAR.DatabaseExplorer/Code/DataAccess/TableDA.cs b/VAR.DatabaseExplorer/Code/DataAccess/TableDA.cs index 6e66bb6..2d76023 100644 --- a/VAR.DatabaseExplorer/Code/DataAccess/TableDA.cs +++ b/VAR.DatabaseExplorer/Code/DataAccess/TableDA.cs @@ -7,10 +7,10 @@ namespace VAR.DatabaseExplorer.Code.DataAccess { public class TableDA { - public static List
GetAllTables(string conexionString) + public static List
GetAllTables(string connectionString) { var tables = new List
(); - var cnx = new SqlConnection(conexionString); + var cnx = new SqlConnection(connectionString); cnx.Open(); DataTable dt = cnx.GetSchema("Tables"); @@ -20,21 +20,23 @@ namespace VAR.DatabaseExplorer.Code.DataAccess foreach (DataRow dr in dt.Rows) { - tables.Add(new Table + Table table = new Table { Schema = (string)dr["TABLE_SCHEMA"], Name = (string)dr["TABLE_NAME"], Type = (string)dr["TABLE_TYPE"] - }); + }; + + tables.Add(table); } return tables; } - - public static DataTable GetData(string conexionString, string tableName) + + public static DataTable GetData(string connectionString, string tableFullName) { - var cnx = new SqlConnection(conexionString); - string strCmd = string.Format("SELECT * FROM {0}", tableName); + var cnx = new SqlConnection(connectionString); + string strCmd = string.Format("SELECT * FROM {0}", tableFullName); var da = new SqlDataAdapter(strCmd, cnx); var dt = new DataTable(); cnx.Open(); diff --git a/VAR.DatabaseExplorer/Code/DataTableHelper.cs b/VAR.DatabaseExplorer/Code/DataTableHelper.cs index 5099a87..73f1f42 100644 --- a/VAR.DatabaseExplorer/Code/DataTableHelper.cs +++ b/VAR.DatabaseExplorer/Code/DataTableHelper.cs @@ -2,29 +2,31 @@ using System.Collections.Generic; using System.Data; using System.Globalization; +using System.IO; using System.Text; namespace VAR.DatabaseExplorer.Code { public static class DataTableHelper { - public static List DataTable_GenerateInserts(DataTable dataTable, string destTable) + public static void DataTable_GenerateInserts(TextWriter txtWriter, DataTable dataTable, string destTable) { var nfi = new NumberFormatInfo { NumberDecimalSeparator = "." }; - - var listCmds = new List(); - + + var sbColumns = new StringBuilder(); + foreach (DataColumn dc in dataTable.Columns) + { + // El nombre de la columna + if (sbColumns.Length > 0) { sbColumns.Append(", "); } + sbColumns.AppendFormat("[{0}]", dc.ColumnName); + } + // Recorrer la tabla de datos foreach (DataRow dr in dataTable.Rows) { - var sbColumns = new StringBuilder(); var sbValues = new StringBuilder(); foreach (DataColumn dc in dataTable.Columns) { - // El nombre de la columna - if (sbColumns.Length > 0) { sbColumns.Append(", "); } - sbColumns.AppendFormat("[{0}]", dc.ColumnName); - // El valor de la columna if (sbValues.Length > 0) { sbValues.Append(", "); } object valor = dr[dc]; @@ -41,7 +43,12 @@ namespace VAR.DatabaseExplorer.Code // Cadenas sbValues.AppendFormat("'{0}'", ((string)valor).Replace("'", "''")); } - else if (type == "int" || type == "int32" || type == "int64") + else if (type == "short" || type == "int16") + { + // short + sbValues.Append(((short)valor).ToString(nfi)); + } + else if (type == "int" || type == "int32") { // int sbValues.Append(((int)valor).ToString(nfi)); @@ -81,11 +88,9 @@ namespace VAR.DatabaseExplorer.Code } // Insertar fila a la datatable destino - listCmds.Add(string.Format("INSERT INTO {0} ({1}) VALUES ({2});", - destTable, sbColumns.ToString(), sbValues.ToString())); + txtWriter.WriteLine(string.Format("INSERT INTO {0} ({1}) VALUES ({2});", + destTable, sbColumns.ToString(), sbValues.ToString())); } - - return listCmds; } } } diff --git a/VAR.DatabaseExplorer/Code/DatabaseDesc.cs b/VAR.DatabaseExplorer/Code/DatabaseDesc.cs deleted file mode 100644 index 525ec96..0000000 --- a/VAR.DatabaseExplorer/Code/DatabaseDesc.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Xml.Serialization; - -namespace VAR.DatabaseExplorer.Code -{ - [Serializable] - public class DatabaseDesc - { - private string _nombre = string.Empty; - [XmlAttribute("Nombre")] - public string Nombre - { - get { return _nombre; } - set { _nombre = value; } - } - - private readonly List _tablas = new List(); - [XmlArray("Tablas")] - public List Tablas { get { return _tablas; } } - } -} diff --git a/VAR.DatabaseExplorer/Code/TablaDesc.cs b/VAR.DatabaseExplorer/Code/TablaDesc.cs deleted file mode 100644 index 0f3c00b..0000000 --- a/VAR.DatabaseExplorer/Code/TablaDesc.cs +++ /dev/null @@ -1,280 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Data; -using System.Data.SqlClient; -using System.Xml.Serialization; - -namespace VAR.DatabaseExplorer.Code -{ - [Serializable] - public class TablaDesc - { - #region Data parameters - - private String _esquema = String.Empty; - - [XmlAttribute("Esquema")] - public string Esquema - { - get { return _esquema; } - set { _esquema = value; } - } - - private String _nombre = String.Empty; - - [XmlAttribute("Nombre")] - public string Nombre - { - get { return _nombre; } - set { _nombre = value; } - } - - private readonly List _columnas = new List(); - - [XmlArray("Columnas")] - public List Columnas - { - get { return _columnas; } - } - - #endregion - - #region FillDesc - - // Obtener una columna existente - private ColumnaDesc GetCol(String nombre) - { - foreach (ColumnaDesc col in Columnas) - { - if (String.Compare(col.Nombre, nombre, StringComparison.Ordinal) == 0) - { - return (col); - } - } - return null; - } - - public void FillDesc(String esquema, String nombre, SqlConnection cnx) - { - // establecer esquema y nombre - Esquema = esquema; - Nombre = nombre; - - // Preparar comando y parametros - var da = new SqlDataAdapter(@" - SELECT col.COLUMN_NAME AS Columna, - col.DATA_TYPE AS Tipo, - col.CHARACTER_MAXIMUM_LENGTH AS Tamanho, - c.CONSTRAINT_TYPE AS TipoClave, - col.IS_NULLABLE AS Nullable - FROM INFORMATION_SCHEMA.COLUMNS AS col - LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS k - ON col.COLUMN_NAME=k.COLUMN_NAME AND - col.TABLE_NAME=k.TABLE_NAME AND - col.TABLE_SCHEMA=k.TABLE_SCHEMA - LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS c - ON k.CONSTRAINT_NAME=c.CONSTRAINT_NAME - WHERE col.TABLE_NAME=@nombreTabla AND - col.TABLE_SCHEMA=@nombreEsquema - ORDER BY col.ORDINAL_POSITION - ", cnx); - var prm = new SqlParameter("@nombreTabla", SqlDbType.VarChar, 100) {Value = nombre}; - da.SelectCommand.Parameters.Add(prm); - prm = new SqlParameter("@nombreEsquema", SqlDbType.VarChar, 100) {Value = esquema}; - da.SelectCommand.Parameters.Add(prm); - - // Obtener datatable con las columnas - var dt = new DataTable(); - cnx.Open(); - da.Fill(dt); - cnx.Close(); - - // Recorrer datatable estableciendo la lista de columnas - Columnas.Clear(); - foreach (DataRow dr in dt.Rows) - { - // Obtener columna - ColumnaDesc col = GetCol((String) dr["Columna"]); - if (col == null) - { - col = new ColumnaDesc(); - Columnas.Add(col); - } - - // Establecer datos de la columna - col.Nombre = (String) dr["Columna"]; - col.Tipo = ((String) dr["Tipo"]).ToLower(); - if (dr["Tamanho"] != DBNull.Value) - { - col.Tamanho = (int) dr["Tamanho"]; - } - if (dr["TipoClave"] != DBNull.Value) - { - if (((String) dr["TipoClave"]).Contains("PRIMARY")) - { - col.Primaria = true; - } - } - string strNullable = ((String) dr["Nullable"]).ToLower(); - col.Nullable = (strNullable == "yes"); - } - } - - #endregion - } - - #region TipoCol - - public enum TipoCol - { - Unset, - Numerico, - AproxNumerico, - Tiempo, - Texto, - Binario, - Booleano, - Otro - } - - #endregion - - [Serializable] - public class ColumnaDesc - { - #region Data properties - - private string _nombre = String.Empty; - - [XmlAttribute("Nombre")] - public string Nombre - { - get { return _nombre; } - set { _nombre = value; } - } - - private string _tipo = String.Empty; - - [XmlAttribute("Tipo")] - public string Tipo - { - get { return _tipo; } - set { _tipo = value; } - } - - private int _tamanho = -1; - - [XmlAttribute("Tamanho")] - public int Tamanho - { - get { return _tamanho; } - set { _tamanho = value; } - } - - private bool _nullable; - - [XmlAttribute("Nullable")] - public bool Nullable - { - get { return _nullable; } - set { _nullable = value; } - } - - private bool _primaria; - - [XmlAttribute("Primaria")] - public bool Primaria - { - get { return _primaria; } - set { _primaria = value; } - } - - #endregion - - #region GetTipo - - private TipoCol _tipoCol = TipoCol.Unset; - - public TipoCol GetTipo() - { - string strTipo = Tipo.ToLower(); - - if (_tipoCol != TipoCol.Unset) - { - return _tipoCol; - } - - // Numericos - if ( - strTipo == "bigint" || - strTipo == "int" || - strTipo == "smallint" || - strTipo == "tinyint" || - strTipo == "bigint" - ) - { - _tipoCol = TipoCol.Numerico; - } - - // Aproximados numericos - if ( - strTipo == "float" || - strTipo == "real" - ) - { - _tipoCol = TipoCol.AproxNumerico; - } - - // Tiempo - if ( - strTipo == "date" || - strTipo == "datetimeoffset" || - strTipo == "datetime2" || - strTipo == "smalldatetime" || - strTipo == "datetime" || - strTipo == "time" - ) - { - _tipoCol = TipoCol.Tiempo; - } - - // Texto - if ( - strTipo == "char" || - strTipo == "varchar" || - strTipo == "text" || - strTipo == "nchar" || - strTipo == "nvarchar" || - strTipo == "ntext" - ) - { - _tipoCol = TipoCol.Texto; - } - - // Binario - if ( - strTipo == "binary" || - strTipo == "varbinary" || - strTipo == "image" - ) - { - _tipoCol = TipoCol.Binario; - } - - // Booleano - if ( - strTipo == "bit" - ) - { - _tipoCol = TipoCol.Booleano; - } - - // Otro - _tipoCol = TipoCol.Otro; - - return _tipoCol; - } - - #endregion - } -} diff --git a/VAR.DatabaseExplorer/UI/FrmBaseDatos.Designer.cs b/VAR.DatabaseExplorer/UI/FrmBaseDatos.Designer.cs index 5b2db9e..cc19878 100644 --- a/VAR.DatabaseExplorer/UI/FrmBaseDatos.Designer.cs +++ b/VAR.DatabaseExplorer/UI/FrmBaseDatos.Designer.cs @@ -31,11 +31,6 @@ this.lblConString = new System.Windows.Forms.Label(); this.btnCopiarConString = new System.Windows.Forms.Button(); this.menuBaseDatos = new System.Windows.Forms.MenuStrip(); - this.archivoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.menuCargar = new System.Windows.Forms.ToolStripMenuItem(); - this.menuGuardar = new System.Windows.Forms.ToolStripMenuItem(); - this.menuConfiguracion = new System.Windows.Forms.ToolStripMenuItem(); - this.btnGenerar = new System.Windows.Forms.Button(); this.btnVerDatos = new System.Windows.Forms.Button(); this.lblTituloTabla = new System.Windows.Forms.Label(); this.lblTituloDB = new System.Windows.Forms.Label(); @@ -55,7 +50,7 @@ this.colClave = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.colNullable = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.txtConString = new VAR.DatabaseExplorer.Controls.CustomTextBox(); - this.menuBaseDatos.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); this.splitContainer1.SuspendLayout(); @@ -83,63 +78,15 @@ // // menuBaseDatos // - this.menuBaseDatos.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.archivoToolStripMenuItem, - this.menuConfiguracion}); this.menuBaseDatos.Location = new System.Drawing.Point(0, 0); this.menuBaseDatos.Name = "menuBaseDatos"; this.menuBaseDatos.Size = new System.Drawing.Size(806, 24); - this.menuBaseDatos.TabIndex = 9; - this.menuBaseDatos.Text = "menuBaseDatos"; - this.menuBaseDatos.Visible = false; - this.menuBaseDatos.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.menuBaseDatos_ItemClicked); - // - // archivoToolStripMenuItem - // - this.archivoToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.menuCargar, - this.menuGuardar}); - this.archivoToolStripMenuItem.MergeIndex = 0; - this.archivoToolStripMenuItem.Name = "archivoToolStripMenuItem"; - this.archivoToolStripMenuItem.Size = new System.Drawing.Size(92, 20); - this.archivoToolStripMenuItem.Text = "Base de Datos"; - // - // menuCargar - // - this.menuCargar.Name = "menuCargar"; - this.menuCargar.Size = new System.Drawing.Size(116, 22); - this.menuCargar.Text = "Cargar"; - this.menuCargar.Click += new System.EventHandler(this.menuCargar_Click); - // - // menuGuardar - // - this.menuGuardar.Name = "menuGuardar"; - this.menuGuardar.Size = new System.Drawing.Size(116, 22); - this.menuGuardar.Text = "Guardar"; - this.menuGuardar.Click += new System.EventHandler(this.menuGuardar_Click); - // - // menuConfiguracion - // - this.menuConfiguracion.Name = "menuConfiguracion"; - this.menuConfiguracion.Size = new System.Drawing.Size(95, 20); - this.menuConfiguracion.Text = "Configuracion"; - this.menuConfiguracion.Click += new System.EventHandler(this.menuConfiguracion_Click); - // - // btnGenerar - // - this.btnGenerar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnGenerar.Location = new System.Drawing.Point(392, 485); - this.btnGenerar.Name = "btnGenerar"; - this.btnGenerar.Size = new System.Drawing.Size(75, 23); - this.btnGenerar.TabIndex = 10; - this.btnGenerar.Text = "Generar"; - this.btnGenerar.UseVisualStyleBackColor = true; - this.btnGenerar.Click += new System.EventHandler(this.btnGenerar_Click); + this.menuBaseDatos.TabIndex = 18; // // btnVerDatos // - this.btnVerDatos.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnVerDatos.Location = new System.Drawing.Point(3, 485); + this.btnVerDatos.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnVerDatos.Location = new System.Drawing.Point(392, 485); this.btnVerDatos.Name = "btnVerDatos"; this.btnVerDatos.Size = new System.Drawing.Size(75, 23); this.btnVerDatos.TabIndex = 11; @@ -177,8 +124,8 @@ // // btnDocGen // - this.btnDocGen.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnDocGen.Location = new System.Drawing.Point(311, 485); + this.btnDocGen.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnDocGen.Location = new System.Drawing.Point(84, 485); this.btnDocGen.Name = "btnDocGen"; this.btnDocGen.Size = new System.Drawing.Size(75, 23); this.btnDocGen.TabIndex = 14; @@ -231,7 +178,6 @@ this.splitContainer1.Panel2.Controls.Add(this.lblTituloTabla); this.splitContainer1.Panel2.Controls.Add(this.btnDocGen); this.splitContainer1.Panel2.Controls.Add(this.lsvColumnas); - this.splitContainer1.Panel2.Controls.Add(this.btnGenerar); this.splitContainer1.Panel2.Controls.Add(this.btnVerDatos); this.splitContainer1.Size = new System.Drawing.Size(806, 511); this.splitContainer1.SplitterDistance = 332; @@ -286,7 +232,7 @@ // btnExportData // this.btnExportData.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnExportData.Location = new System.Drawing.Point(84, 485); + this.btnExportData.Location = new System.Drawing.Point(3, 485); this.btnExportData.Name = "btnExportData"; this.btnExportData.Size = new System.Drawing.Size(75, 23); this.btnExportData.TabIndex = 15; @@ -357,10 +303,9 @@ this.Name = "FrmBaseDatos"; this.Text = "Base de Datos"; this.Load += new System.EventHandler(this.frmBaseDatos_Load); - this.menuBaseDatos.ResumeLayout(false); - this.menuBaseDatos.PerformLayout(); this.splitContainer1.Panel1.ResumeLayout(false); this.splitContainer1.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); this.splitContainer1.ResumeLayout(false); this.ResumeLayout(false); this.PerformLayout(); @@ -380,12 +325,7 @@ private System.Windows.Forms.ColumnHeader colNombreColumna; private System.Windows.Forms.ColumnHeader colTipoDatos; private System.Windows.Forms.MenuStrip menuBaseDatos; - private System.Windows.Forms.ToolStripMenuItem archivoToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem menuCargar; - private System.Windows.Forms.ToolStripMenuItem menuGuardar; - private System.Windows.Forms.ToolStripMenuItem menuConfiguracion; private System.Windows.Forms.ColumnHeader colClave; - private System.Windows.Forms.Button btnGenerar; private System.Windows.Forms.Button btnVerDatos; private System.Windows.Forms.Label lblTituloTabla; private System.Windows.Forms.Label lblTituloDB; diff --git a/VAR.DatabaseExplorer/UI/FrmBaseDatos.cs b/VAR.DatabaseExplorer/UI/FrmBaseDatos.cs index 01995af..c01c665 100644 --- a/VAR.DatabaseExplorer/UI/FrmBaseDatos.cs +++ b/VAR.DatabaseExplorer/UI/FrmBaseDatos.cs @@ -13,18 +13,14 @@ namespace VAR.DatabaseExplorer.UI { public partial class FrmBaseDatos : Form { - private SqlConnection _cnx; - private Config _config; + private string _connectionString; + private string _tableSchema; private string _tableName; private void Initialize() { - // Establecer conexion - txtConString.Text = _config.ConnectionString; - _cnx = new SqlConnection(_config.ConnectionString); - - List
tables = TableDA.GetAllTables(_config.ConnectionString); + List
tables = TableBL.Table_GetAll(_connectionString); lsvTablas.Items.Clear(); foreach (Table table in tables) { @@ -32,97 +28,22 @@ namespace VAR.DatabaseExplorer.UI item.SubItems.Add(table.Name); item.SubItems.Add(table.Type); } - - TablesToListView(); + lsvColumnas.Items.Clear(); } - - /// - /// Metodo para copiar las tablas seleccionadas en el listview a la configuracion - /// - private void TablesFromListView() - { - _config.Tablas.Clear(); - foreach (ListViewItem item in lsvTablas.Items) - { - if (item.Checked) - { - _config.Tablas.Add(new TablaInfo - { - Esquema = item.SubItems[0].Text, - Nombre = item.SubItems[1].Text - }); - } - } - } - - /// - /// Metodo para seleccionar las tablas en le listview desde la configuracion - /// - private void TablesToListView() - { - int j; - - // Desmarcar todos en caso de no haber ninguna tabla - if (_config.Tablas.Count == 0) - { - foreach (ListViewItem item in lsvTablas.Items) - item.Checked = false; - return; - } - - // Recorrer items marcando los que estan en la configuracion - int n = _config.Tablas.Count; - int i = j = 0; - foreach (ListViewItem item in lsvTablas.Items) - { - item.Checked = false; - do - { - if (string.Compare(_config.Tablas[i].Esquema, item.SubItems[0].Text, StringComparison.Ordinal) == 0 && - string.Compare(_config.Tablas[i].Nombre, item.SubItems[1].Text, StringComparison.Ordinal) == 0) - { - item.Checked = true; - break; - } - i = (i + 1) % n; - } while (i != j); - j = i; - } - } - - - public DatabaseDesc CrearDatabaseDesc() - { - var db = new DatabaseDesc { Nombre = _cnx.Database }; - foreach (TablaInfo t in _config.Tablas) - { - var td = new TablaDesc(); - td.FillDesc(t.Esquema, t.Nombre, _cnx); - db.Tablas.Add(td); - } - return (db); - } - - public FrmBaseDatos(String connectionString) + + public FrmBaseDatos(string connectionString) { InitializeComponent(); - - _config = new Config {ConnectionString = connectionString}; + _connectionString = connectionString; + txtConString.Text = connectionString; } - - public FrmBaseDatos(Config config) - { - InitializeComponent(); - - _config = config; - } - + private void frmBaseDatos_Load(object sender, EventArgs e) { Initialize(); - - lblTituloDB.Text = _cnx.Database; + Database database = DatabaseBL.Database_Get(_connectionString); + lblTituloDB.Text = database.Name; lblTituloTabla.Text = ""; } @@ -141,7 +62,7 @@ namespace VAR.DatabaseExplorer.UI lblTituloTabla.Text = _tableSchema + @"." + _tableName; - List columns = ColumnDA.GetColumns(_config.ConnectionString, _tableSchema, _tableName); + List columns = ColumnDA.GetColumns(_connectionString, _tableSchema, _tableName); lsvColumnas.Items.Clear(); foreach (Column col in columns) { @@ -152,114 +73,42 @@ namespace VAR.DatabaseExplorer.UI subitem.SubItems.Add(col.Nullable ? "Null" : "NotNull"); } } - - private void menuCargar_Click(object sender, EventArgs e) - { - var dialogo = new OpenFileDialog(); - if (dialogo.ShowDialog() == DialogResult.OK) - { - _config = Config.Cargar(dialogo.FileName); - Initialize(); - } - } - - private void menuGuardar_Click(object sender, EventArgs e) - { - var dialogo = new SaveFileDialog(); - if (dialogo.ShowDialog() == DialogResult.OK) - { - TablesFromListView(); - _config.Guardar(dialogo.FileName); - } - } - - private void menuConfiguracion_Click(object sender, EventArgs e) - { - //// Llamar a la ventana de configuracion - //FrmCodeGenConfig frm = new FrmCodeGenConfig(config); - //frm.ShowDialog(); - } - + private void btnVerDatos_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(_tableSchema) || string.IsNullOrEmpty(_tableName)) { return; } - - // Obtener descripcion de tabla - var td = new TablaDesc(); - td.FillDesc(_tableSchema, _tableName, _cnx); - - // Crear y mostrar el formulario de los datos. - var form = new FrmDatos(td, _config.ConnectionString); + + var form = new FrmDatos(_connectionString, _tableSchema, _tableName); FrmPrincipal.AddForm(form); } private void btnProcs_Click(object sender, EventArgs e) { - // Crear y mostrar el formulario de los procedimientos. - var form = new FrmProcedimientos(_config.ConnectionString); + var form = new FrmProcedimientos(_connectionString); FrmPrincipal.AddForm(form); } private void btnExec_Click(object sender, EventArgs e) { - // Crear y mostrar el formulario de exec. - var form = new FrmExec(_config.ConnectionString); + var form = new FrmExec(_connectionString); FrmPrincipal.AddForm(form); } - - - private void menuBaseDatos_ItemClicked(object sender, ToolStripItemClickedEventArgs e) - { - - } - - private void btnGenerar_Click(object sender, EventArgs e) - { - TablesFromListView(); - DatabaseDesc db = CrearDatabaseDesc(); - - var seriador = new XmlSerializer(typeof(DatabaseDesc)); - seriador.Serialize(Console.Out, db); - } - + private void btnDocGen_Click(object sender, EventArgs e) { - // Hacer insensible la ventana Parent.Enabled = false; - // Obtener informacion. - TablesFromListView(); - DatabaseDesc db = CrearDatabaseDesc(); - - // Escribir documentacion - DocumentationGeneratorBL.GenerateDocumentation(db); - - // Hace sensible la ventana + Database database = DatabaseBL.Database_GetSchema(connectionString: _connectionString, fillDefinitions: true); + + string fixedDatabaseName = database.Name.Replace(' ', '_'); + var streamWriter = new StreamWriter(fixedDatabaseName + ".documentation.html"); + DatabaseBL.Database_GenerateDocumentation(streamWriter, database); + streamWriter.Close(); + Parent.Enabled = true; - - /* - tablas_delistview(); - Thread hilo=new Thread(new ThreadStart(instancia.GenerarDoc)); - hilo.Start(); - */ } - - public void GenerarDoc() - { - // Hacer insensible la ventana - Enabled = false; - - // Obtener informacion. - DatabaseDesc db = CrearDatabaseDesc(); - - // Escribir documentacion - DocumentationGeneratorBL.GenerateDocumentation(db); - - // Hace sensible la ventana - Enabled = true; - } - + private void btnRefresh_Click(object sender, EventArgs e) { Initialize(); @@ -267,67 +116,14 @@ namespace VAR.DatabaseExplorer.UI private void btnExportData_Click(object sender, EventArgs e) { - // Hacer insensible la ventana Parent.Enabled = false; - - // Obtener informacion. - TablesFromListView(); - DatabaseDesc db = CrearDatabaseDesc(); - - // Preparar cabecera del script - var listCmds = new List(); - listCmds.Add("SET NOCOUNT ON;"); - listCmds.Add(string.Empty); - - //// Comandos de desactivacion de FKs - //foreach (TablaDesc t in db.Tablas) - //{ - // string tableName = string.Format("{0}.{1}", t.Esquema, t.Nombre); - // listCmds.Add(string.Format("ALTER TABLE {0} NOCHECK CONSTRAINT all;", tableName)); - //} - //listCmds.Add("GO"); - //listCmds.Add(string.Empty); - - // Desactivar todas las FKs - listCmds.Add("-- Disable all constraints"); - listCmds.Add("EXEC sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'"); - listCmds.Add("GO"); - listCmds.Add(string.Empty); - - // Prepara informacion a exportar - foreach (TablaDesc t in db.Tablas) - { - string tableName = string.Format("{0}.{1}", t.Esquema, t.Nombre); - listCmds.Add(string.Format("PRINT '*** Importing data of {0}....';", tableName)); - List listCmdsTableData = TableBL.ExportData(_config.ConnectionString, tableName); - listCmds.AddRange(listCmdsTableData); - } - - //// Comandos de activacion de FKs - //foreach (TablaDesc t in db.Tablas) - //{ - // string tableName = string.Format("{0}.{1}", t.Esquema, t.Nombre); - // listCmds.Add(string.Format("ALTER TABLE {0} WITH CHECK CHECK CONSTRAINT all;", tableName)); - //} - //listCmds.Add("GO"); - //listCmds.Add(string.Empty); - - // Activar todas las FKs - listCmds.Add("-- Enable all constraints"); - listCmds.Add("EXEC sp_MSforeachtable @command1='print ''?''', @command2='ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all'"); - listCmds.Add("GO"); - listCmds.Add(string.Empty); - - // Escribir script - string fixedDatabaseName = db.Nombre.Replace(' ', '_'); - var escritor = new StreamWriter(fixedDatabaseName + ".data.sql"); - foreach (string cmd in listCmds) - { - escritor.WriteLine(cmd); - } - escritor.Close(); - - // Hace sensible la ventana + + Database database = DatabaseBL.Database_GetSchema(connectionString: _connectionString, fillDefinitions: false); + string fixedDatabaseName = database.Name.Replace(' ', '_'); + var streamWriter = new StreamWriter(fixedDatabaseName + ".data.sql"); + DatabaseBL.Database_ExportData(streamWriter, _connectionString, database); + streamWriter.Close(); + Parent.Enabled = true; } diff --git a/VAR.DatabaseExplorer/UI/FrmBaseDatos.resx b/VAR.DatabaseExplorer/UI/FrmBaseDatos.resx index 6b02100..39ba7d0 100644 --- a/VAR.DatabaseExplorer/UI/FrmBaseDatos.resx +++ b/VAR.DatabaseExplorer/UI/FrmBaseDatos.resx @@ -112,15 +112,15 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + 17, 17 - + 41 \ No newline at end of file diff --git a/VAR.DatabaseExplorer/UI/FrmDatos.cs b/VAR.DatabaseExplorer/UI/FrmDatos.cs index 1b6f5bd..5689ebe 100644 --- a/VAR.DatabaseExplorer/UI/FrmDatos.cs +++ b/VAR.DatabaseExplorer/UI/FrmDatos.cs @@ -11,21 +11,24 @@ namespace VAR.DatabaseExplorer.UI { #region Declarations - private readonly TablaDesc _tablaDesc; private readonly string _conexionString = string.Empty; + private readonly string _tableSchema = string.Empty; + private readonly string _tableName = string.Empty; #endregion #region Form life cycle - public FrmDatos(TablaDesc tablaDesc, string conexionString) + public FrmDatos(string conexionString, string tableSchema, string tableName) { InitializeComponent(); - _tablaDesc = tablaDesc; + _conexionString = conexionString; + _tableSchema = tableSchema; + _tableName = tableName; _conexionString = conexionString; LoadDataFromTable(); } - + private void frmDatos_Load(object sender, EventArgs e) { } #endregion @@ -56,8 +59,8 @@ namespace VAR.DatabaseExplorer.UI private void LoadDataFromTable() { - Text = _tablaDesc.Esquema + @"." + _tablaDesc.Nombre; - string tableFullName = "[" + _tablaDesc.Esquema + "].[" + _tablaDesc.Nombre + "]"; + Text = _tableSchema + @"." + _tableName; + string tableFullName = "[" + _tableSchema + "].[" + _tableName + "]"; var dt= new DataTable(); var cnx = new SqlConnection(_conexionString); var da = new SqlDataAdapter( "select * from " + tableFullName, cnx); diff --git a/VAR.DatabaseExplorer/UI/FrmExec.cs b/VAR.DatabaseExplorer/UI/FrmExec.cs index 7eaf956..7f19c93 100644 --- a/VAR.DatabaseExplorer/UI/FrmExec.cs +++ b/VAR.DatabaseExplorer/UI/FrmExec.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Drawing; +using System.IO; using System.Windows.Forms; using VAR.DatabaseExplorer.Code; @@ -48,12 +49,13 @@ namespace VAR.DatabaseExplorer.UI { DataTable dataTable = Exec(); - List listCmds = DataTableHelper.DataTable_GenerateInserts(dataTable, txtDestTable.Text); + StringWriter stringWriter = new StringWriter(); + DataTableHelper.DataTable_GenerateInserts(stringWriter, dataTable, txtDestTable.Text); // Preparar la datatable destino var destDataTable = new DataTable(); destDataTable.Columns.Add("Cmd", typeof(String)); - foreach (string cmd in listCmds) + foreach (string cmd in stringWriter.GetStringBuilder().ToString().Split('\n')) { destDataTable.Rows.Add(new object[] { cmd }); } diff --git a/VAR.DatabaseExplorer/UI/FrmPrincipal.Designer.cs b/VAR.DatabaseExplorer/UI/FrmPrincipal.Designer.cs index bfd53a4..705c19d 100644 --- a/VAR.DatabaseExplorer/UI/FrmPrincipal.Designer.cs +++ b/VAR.DatabaseExplorer/UI/FrmPrincipal.Designer.cs @@ -31,9 +31,6 @@ this.menuPrincipal = new System.Windows.Forms.MenuStrip(); this.menuServidor = new System.Windows.Forms.ToolStripMenuItem(); this.menuBuscarServidor = new System.Windows.Forms.ToolStripMenuItem(); - this.menuBaseDatos = new System.Windows.Forms.ToolStripMenuItem(); - this.menuConectarA = new System.Windows.Forms.ToolStripMenuItem(); - this.menuConectarPRUEBAS = new System.Windows.Forms.ToolStripMenuItem(); this.flowpnlWindows = new System.Windows.Forms.FlowLayoutPanel(); this.menuPrincipal.SuspendLayout(); this.SuspendLayout(); @@ -41,8 +38,7 @@ // menuPrincipal // this.menuPrincipal.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.menuServidor, - this.menuBaseDatos}); + this.menuServidor}); this.menuPrincipal.Location = new System.Drawing.Point(0, 0); this.menuPrincipal.Name = "menuPrincipal"; this.menuPrincipal.Size = new System.Drawing.Size(800, 24); @@ -64,29 +60,6 @@ this.menuBuscarServidor.Text = "Buscar Servidor"; this.menuBuscarServidor.Click += new System.EventHandler(this.menuBuscarServidor_Click); // - // menuBaseDatos - // - this.menuBaseDatos.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.menuConectarA, - this.menuConectarPRUEBAS}); - this.menuBaseDatos.Name = "menuBaseDatos"; - this.menuBaseDatos.Size = new System.Drawing.Size(92, 20); - this.menuBaseDatos.Text = "Base de Datos"; - // - // menuConectarA - // - this.menuConectarA.Name = "menuConectarA"; - this.menuConectarA.Size = new System.Drawing.Size(183, 22); - this.menuConectarA.Text = "Conectar a..."; - this.menuConectarA.Click += new System.EventHandler(this.menuConectarA_Click); - // - // menuConectarPRUEBAS - // - this.menuConectarPRUEBAS.Name = "menuConectarPRUEBAS"; - this.menuConectarPRUEBAS.Size = new System.Drawing.Size(183, 22); - this.menuConectarPRUEBAS.Text = "Conectar a PRUEBAS"; - this.menuConectarPRUEBAS.Click += new System.EventHandler(this.menuConectarPRUEBAS_Click); - // // flowpnlWindows // this.flowpnlWindows.AutoSize = true; @@ -122,9 +95,6 @@ private System.Windows.Forms.MenuStrip menuPrincipal; private System.Windows.Forms.ToolStripMenuItem menuServidor; private System.Windows.Forms.ToolStripMenuItem menuBuscarServidor; - private System.Windows.Forms.ToolStripMenuItem menuBaseDatos; - private System.Windows.Forms.ToolStripMenuItem menuConectarA; - private System.Windows.Forms.ToolStripMenuItem menuConectarPRUEBAS; private System.Windows.Forms.FlowLayoutPanel flowpnlWindows; } } \ No newline at end of file diff --git a/VAR.DatabaseExplorer/UI/FrmPrincipal.cs b/VAR.DatabaseExplorer/UI/FrmPrincipal.cs index b98bca7..dc46ab7 100644 --- a/VAR.DatabaseExplorer/UI/FrmPrincipal.cs +++ b/VAR.DatabaseExplorer/UI/FrmPrincipal.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Windows.Forms; -using VAR.DatabaseExplorer.Code; using VAR.DatabaseExplorer.Controls; namespace VAR.DatabaseExplorer.UI @@ -81,36 +80,13 @@ namespace VAR.DatabaseExplorer.UI #endregion #region Menus - - private void menuConectarPRUEBAS_Click(object sender, EventArgs e) - { - // Crear ventana de la base de datos de pruebas - var frm = new FrmBaseDatos("Data Source=localhost;Initial Catalog=Tests;Integrated Security=True"); - //frmBaseDatos frm = new frmBaseDatos("Data Source=DANTE;Initial Catalog=BD_AlfonsoRodriguez;Integrated Security=True"); - //frmBaseDatos frm = new frmBaseDatos("Data Source=OSKURITO;Initial Catalog=BD_AlfonsoRodriguez;Integrated Security=True"); - FrmPrincipal.AddForm(frm); - } - + private void menuBuscarServidor_Click(object sender, EventArgs e) { - // Mostrar ventana de buscador de servidores var frm = new FrmServidores(); FrmPrincipal.AddForm(frm); } - - private void menuConectarA_Click(object sender, EventArgs e) - { - // Cargar configuracion - var dialogo = new OpenFileDialog(); - if (dialogo.ShowDialog() != DialogResult.OK) return; - - Config config = Config.Cargar(dialogo.FileName); - - // Crear y mostrar ventana - var frm = new FrmBaseDatos(config); - FrmPrincipal.AddForm(frm); - } - + #endregion } } diff --git a/VAR.DatabaseExplorer/UI/FrmServidores.cs b/VAR.DatabaseExplorer/UI/FrmServidores.cs index 58e083d..499343c 100644 --- a/VAR.DatabaseExplorer/UI/FrmServidores.cs +++ b/VAR.DatabaseExplorer/UI/FrmServidores.cs @@ -33,15 +33,16 @@ namespace VAR.DatabaseExplorer.UI if (lsvServidores.SelectedItems.Count > 0) { ListViewItem item = lsvServidores.SelectedItems[0]; - txtServidor.Text = String.IsNullOrEmpty(item.SubItems[1].Text) + txtServidor.Text = string.IsNullOrEmpty(item.SubItems[1].Text) ? item.SubItems[0].Text - : String.Format("{0}/{1}", item.SubItems[0].Text, item.SubItems[1].Text); + : string.Format("{0}/{1}", item.SubItems[0].Text, item.SubItems[1].Text); } } private void btnListarBBDD_Click(object sender, EventArgs e) { - List databases = DatabaseDA.GetAllDatabases(BuildConnectionString()); + string connectionString = BuildConnectionString(txtServidor.Text, null, txtUsuario.Text, TxtContrasenha.Text); + List databases = DatabaseDA.GetAllDatabases(connectionString); lsvBBDD.Items.Clear(); foreach (Database database in databases) @@ -55,29 +56,29 @@ namespace VAR.DatabaseExplorer.UI private void lsvBBDD_DoubleClick(object sender, EventArgs e) { if (lsvBBDD.SelectedItems.Count != 1) return; - + string databaseName = lsvBBDD.SelectedItems[0].SubItems[0].Text; // Llamar a la venta de la base de datos - var frm = new FrmBaseDatos(BuildConnectionString()); + string connectionStirng = BuildConnectionString(txtServidor.Text, databaseName, txtUsuario.Text, TxtContrasenha.Text); + var frm = new FrmBaseDatos(connectionStirng); FrmPrincipal.AddForm(frm); } - private string BuildConnectionString() + private string BuildConnectionString(string server, string database, string user, string password) { - // Construir cadena de conexion var constructor = new SqlConnectionStringBuilder(); - constructor.DataSource = (!string.IsNullOrEmpty(txtServidor.Text)) ? txtServidor.Text : "localhost"; - if (lsvBBDD.SelectedItems.Count > 0) + constructor.DataSource = string.IsNullOrEmpty(server) ? "localhost" : server; + if (string.IsNullOrEmpty(database) == false) { - constructor.InitialCatalog = lsvBBDD.SelectedItems[0].SubItems[0].Text; + constructor.InitialCatalog = database; } - if (String.IsNullOrEmpty(txtUsuario.Text)) + if (string.IsNullOrEmpty(user)) { constructor.IntegratedSecurity = true; } else { - constructor.UserID = txtUsuario.Text; - constructor.Password = TxtContrasenha.Text; + constructor.UserID = user; + constructor.Password = password; } return constructor.ConnectionString; } diff --git a/VAR.DatabaseExplorer/VAR.DatabaseExplorer.csproj b/VAR.DatabaseExplorer/VAR.DatabaseExplorer.csproj index dc57201..70a18b0 100644 --- a/VAR.DatabaseExplorer/VAR.DatabaseExplorer.csproj +++ b/VAR.DatabaseExplorer/VAR.DatabaseExplorer.csproj @@ -81,8 +81,8 @@ + - @@ -97,8 +97,6 @@ Component - - Component @@ -143,7 +141,6 @@ - FrmBaseDatos.cs