FrmBaseDatos: btnExportData Exports the data of the selected tables.
This commit is contained in:
@@ -108,7 +108,7 @@ namespace ServerExplorer.Code
|
||||
}
|
||||
|
||||
// Insertar fila a la datatable destino
|
||||
listCmds.Add(String.Format("INSERT INTO {0} ({1}) VALUES ({2})",
|
||||
listCmds.Add(String.Format("INSERT INTO {0} ({1}) VALUES ({2});",
|
||||
destTable, sbColumns.ToString(), sbValues.ToString()));
|
||||
}
|
||||
|
||||
|
||||
20
ServerExplorer/UI/FrmBaseDatos.Designer.cs
generated
20
ServerExplorer/UI/FrmBaseDatos.Designer.cs
generated
@@ -48,6 +48,7 @@
|
||||
this.colEsquema = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.colNombreTabla = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.colTipo = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.btnExportData = new System.Windows.Forms.Button();
|
||||
this.lsvColumnas = new ServerExplorer.Controls.CustomListView();
|
||||
this.colNombreColumna = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.colTipoDatos = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
@@ -107,14 +108,14 @@
|
||||
// menuCargar
|
||||
//
|
||||
this.menuCargar.Name = "menuCargar";
|
||||
this.menuCargar.Size = new System.Drawing.Size(152, 22);
|
||||
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(152, 22);
|
||||
this.menuGuardar.Size = new System.Drawing.Size(116, 22);
|
||||
this.menuGuardar.Text = "Guardar";
|
||||
this.menuGuardar.Click += new System.EventHandler(this.menuGuardar_Click);
|
||||
//
|
||||
@@ -224,10 +225,10 @@
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnExec);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.lsvTablas);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnProcs);
|
||||
this.splitContainer1.Panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.splitContainer1_Panel1_Paint);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.btnExportData);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.lblTituloTabla);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.btnDocGen);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.lsvColumnas);
|
||||
@@ -283,6 +284,16 @@
|
||||
this.colTipo.Text = "Tipo";
|
||||
this.colTipo.Width = 71;
|
||||
//
|
||||
// btnExportData
|
||||
//
|
||||
this.btnExportData.Location = new System.Drawing.Point(84, 485);
|
||||
this.btnExportData.Name = "btnExportData";
|
||||
this.btnExportData.Size = new System.Drawing.Size(75, 23);
|
||||
this.btnExportData.TabIndex = 15;
|
||||
this.btnExportData.Text = "ExportData";
|
||||
this.btnExportData.UseVisualStyleBackColor = true;
|
||||
this.btnExportData.Click += new System.EventHandler(this.btnExportData_Click);
|
||||
//
|
||||
// lsvColumnas
|
||||
//
|
||||
this.lsvColumnas.AllowSorting = false;
|
||||
@@ -345,8 +356,8 @@
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Controls.Add(this.btnCopiarConString);
|
||||
this.Controls.Add(this.lblConString);
|
||||
this.Controls.Add(this.menuBaseDatos);
|
||||
this.Controls.Add(this.txtConString);
|
||||
this.Controls.Add(this.menuBaseDatos);
|
||||
this.MainMenuStrip = this.menuBaseDatos;
|
||||
this.Name = "FrmBaseDatos";
|
||||
this.Text = "Base de Datos";
|
||||
@@ -390,5 +401,6 @@
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.ColumnHeader colNullable;
|
||||
private System.Windows.Forms.Button btnRefresh;
|
||||
private System.Windows.Forms.Button btnExportData;
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ using ServerExplorer.Code;
|
||||
using System.Collections.Generic;
|
||||
using ServerExplorer.Code.DataTransfer;
|
||||
using ServerExplorer.Code.DataAccess;
|
||||
using System.IO;
|
||||
|
||||
namespace ServerExplorer.UI
|
||||
{
|
||||
@@ -271,14 +272,92 @@ namespace ServerExplorer.UI
|
||||
Enabled = true;
|
||||
}
|
||||
|
||||
private void splitContainer1_Panel1_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void btnRefresh_Click(object sender, EventArgs e)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
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<string>();
|
||||
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(string.Empty);
|
||||
|
||||
// Prepara informacion a exportar
|
||||
foreach (TablaDesc t in db.Tablas)
|
||||
{
|
||||
string tableName = string.Format("{0}.{1}", t.Esquema, t.Nombre);
|
||||
List<string> listCmdsTableData = ExportData(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(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
|
||||
Parent.Enabled = true;
|
||||
}
|
||||
|
||||
private List<string> ExportData(string tableName)
|
||||
{
|
||||
DataTable dtData = Exec(string.Format("SELECT * FROM {0}", tableName));
|
||||
|
||||
var listCmds = new List<string>();
|
||||
List<string> listCmdsInsert = Utiles.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(string.Empty);
|
||||
|
||||
return listCmds;
|
||||
}
|
||||
|
||||
private DataTable Exec(string cmd)
|
||||
{
|
||||
var cnx = new SqlConnection(_config.ConnectionString);
|
||||
|
||||
var da = new SqlDataAdapter(cmd, cnx);
|
||||
var dt = new DataTable();
|
||||
cnx.Open();
|
||||
da.Fill(dt);
|
||||
cnx.Close();
|
||||
|
||||
return dt;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user