Script SQL creación BBDD en MySQL:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; -- ----------------------------------------------------- -- Schema mydb -- ----------------------------------------------------- DROP SCHEMA IF EXISTS `hosts` ; CREATE SCHEMA IF NOT EXISTS `hosts` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; USE `hosts` ; -- ----------------------------------------------------- -- Table `hosts`.`tiposweb` -- ----------------------------------------------------- DROP TABLE IF EXISTS `hosts`.`tiposweb` ; CREATE TABLE IF NOT EXISTS `hosts`.`tiposweb` ( `id` INT NOT NULL AUTO_INCREMENT, `tipo` VARCHAR(45) NULL, PRIMARY KEY (`id`)) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `hosts`.`dominios` -- ----------------------------------------------------- DROP TABLE IF EXISTS `hosts`.`dominios` ; CREATE TABLE IF NOT EXISTS `hosts`.`dominios` ( `id` INT NOT NULL AUTO_INCREMENT, `dominio` VARCHAR(100) NULL, `FechaRenova` DATE NULL, `directorio` VARCHAR(250) NULL, `serverbbdd` VARCHAR(45) NULL, `userbbdd` VARCHAR(45) NULL, `passbbdd` VARCHAR(45) NULL, `serverftp` VARCHAR(45) NULL, `userftp` VARCHAR(45) NULL, `passftp` VARCHAR(45) NULL, `urladmin` VARCHAR(45) NULL, `useradmin` VARCHAR(45) NULL, `passadmin` VARCHAR(45) NULL, `tiposweb_id` INT NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `dominio_UNIQUE` (`dominio` ASC), INDEX `fk_dominios_tiposweb_idx` (`tiposweb_id` ASC), CONSTRAINT `fk_dominios_tiposweb` FOREIGN KEY (`tiposweb_id`) REFERENCES `hosts`.`tiposweb` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Solapa fichero HOSTS
namespace hosts { public partial class frmHosts : Form { StreamReader fichHostsLectura; StreamWriter fichHostsEscritura; string linea; public frmHosts() { InitializeComponent(); } private void frmHosts_Load(object sender, EventArgs e) { // TODO: esta línea de código carga datos en la tabla 'hostsDataSet.tiposweb' Puede moverla o quitarla según sea necesario. this.tiposwebTableAdapter.Fill(this.hostsDataSet.tiposweb); // TODO: esta línea de código carga datos en la tabla 'hostsDataSet.dominios' Puede moverla o quitarla según sea necesario. this.dominiosTableAdapter.Fill(this.hostsDataSet.dominios); // Leemos el fichero Hosts try { fichHostsLectura = File.OpenText(@"C:\Windows\System32\drivers\etc\hosts"); int i=0; do { linea = fichHostsLectura.ReadLine(); i += 1; if (i == 1) { // Comprobamos el tipo de archivo host switch (linea.ToLower()) { case "# localhost": this.rbtnLocalhost.Checked = true; break; case "# redlocal": this.rbtnRedLocal.Checked = true; break; case "# internet": this.rbtnInternet.Checked = true; break; default: break; } } if (linea != null) { txtHosts.Text = txtHosts.Text + linea +"\n"; } } while (linea != null); fichHostsLectura.Close(); } catch (Exception exp) { txtHosts.Text ="Error al abrir el fichero hosts: "+ exp.Message; } } private void dominiosBindingNavigatorSaveItem_Click(object sender, EventArgs e) { this.Validate(); this.dominiosBindingSource.EndEdit(); this.tableAdapterManager.UpdateAll(this.hostsDataSet); } private void btnGuardarHosts_Click(object sender, EventArgs e) { } private void btnGuardarFicheroHosts_Click(object sender, EventArgs e) { try { fichHostsEscritura = File.CreateText(@"C:\Windows\System32\drivers\etc\hosts"); fichHostsEscritura.Write(txtHosts.Text); fichHostsEscritura.Close(); } catch (Exception exp) { txtHosts.Text = "Error al guardar el fichero hosts: " + exp.Message; } } } }
Solapa de parámetros
Utilizar un objeto a partir de una clase serializada para almacenar los parámetros en un fichero.
Creación de una clase en un archivo nuevo.
Código de la clase Hosts.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; namespace hosts { [Serializable] public class ClaseHosts { String fichero_hosts; String ip_bbdd; String user_bbdd; String pass_bbdd; String servidor_lan; String servidor_internet; public void SetFicheroHosts(String dir) { fichero_hosts = dir; } public void SetIpBBDD (String ip) { // comprobar que es una IP válida ip_bbdd = ip; } public void SetUserBBDD(String user) { // comprobar que es un user válido user_bbdd = user; } public void SetPassBBDD(String pass) { // comprobar que es una password válido pass_bbdd = pass; } public void SetServidorLAN(String lan) { // comprobar que es una ip válida para una LAN servidor_lan = lan; } public void SetServidorInternet(String internet) { // comprobar que es una ip válida para Internet servidor_internet = internet; } public String GetFicheroHosts() { return fichero_hosts; } public String GetIpBBDD() { return ip_bbdd; } public String GetUserBBDD() { return user_bbdd; } public String GetPassBBDD() { return pass_bbdd; } public String GetServidorLAN() { return servidor_lan; } public String GetServidorInternet() { return servidor_internet; } public void Guardar(string nombre, ClaseHosts objeto) { IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream(nombre, FileMode.Create, FileAccess.Write, FileShare.None); formatter.Serialize(stream, objeto); stream.Close(); } public ClaseHosts Cargar(string nombre) { ClaseHosts objeto; IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream(nombre, FileMode.Open, FileAccess.Read, FileShare.Read); objeto = (ClaseHosts)formatter.Deserialize(stream); stream.Close(); return objeto; } } }
Luego cambiaría el código de inicialización de la aplicación.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; // Para menejo de ficheros using System.IO; namespace hosts { public partial class frmHosts : Form { StreamReader fichHostsLectura; StreamWriter fichHostsEscritura; string linea; public frmHosts() { InitializeComponent(); } private void frmHosts_Load(object sender, EventArgs e) { ClaseHosts ObjHosts = new ClaseHosts(); ObjHosts = ObjHosts.Cargar("parametros.dat"); txtFicheroHosts.Text = ObjHosts.GetFicheroHosts(); txtIpBBDD.Text = ObjHosts.GetIpBBDD(); txtUserBBDD.Text = ObjHosts.GetUserBBDD(); txtPassBBDD.Text = ObjHosts.GetPassBBDD(); txtServidorLAN.Text = ObjHosts.GetServidorLAN(); txtServidorInternet.Text = ObjHosts.GetServidorInternet(); // Leemos el fichero Hosts try { fichHostsLectura = File.OpenText(ObjHosts.GetFicheroHosts()); int i=0; do { linea = fichHostsLectura.ReadLine(); i += 1; if (i == 1) { // Comprobamos el tipo de archivo host switch (linea.ToLower()) { case "# localhost": this.rbtnLocalhost.Checked = true; break; case "# redlocal": this.rbtnRedLocal.Checked = true; break; case "# internet": this.rbtnInternet.Checked = true; break; default: break; } } if (linea != null) { txtHosts.Text = txtHosts.Text + linea +"\n"; } } while (linea != null); fichHostsLectura.Close(); } catch (Exception exp) { txtHosts.Text ="Error al abrir el fichero hosts: "+ exp.Message; } } private void btnGuardarHosts_Click(object sender, EventArgs e) { } private void btnGuardarFicheroHosts_Click(object sender, EventArgs e) { try { fichHostsEscritura = File.CreateText(ObjHosts.GetFicheroHosts()); fichHostsEscritura.Write(txtHosts.Text); fichHostsEscritura.Close(); } catch (Exception exp) { txtHosts.Text = "Error al guardar el fichero hosts: " + exp.Message; } } private void btnConectar_Click(object sender, EventArgs e) { tabHosts.SelectedIndex = tabHosts.TabPages.IndexOf(tabParametros); } private void btnGuardarParametros_Click(object sender, EventArgs e) { // Serializamos el objeto ClaseHosts ClaseHosts ObjHosts = new ClaseHosts(); ObjHosts.SetFicheroHosts(txtFicheroHosts.Text); ObjHosts.SetIpBBDD(txtIpBBDD.Text); ObjHosts.SetUserBBDD(txtUserBBDD.Text); ObjHosts.SetPassBBDD(txtPassBBDD.Text); ObjHosts.SetServidorLAN(txtServidorLAN.Text); ObjHosts.SetServidorInternet(txtServidorInternet.Text); ObjHosts.Guardar("parametros.dat", ObjHosts); } } }