Desarrollo de Software en C++, C#, PHP,JavaScript, Matlab, Java, Android, Arduino, Python, Flutter, React, Vue, Solución de ejercicios, Programas informáticos, Inteligencia Artificial.

Buscar

LINQ to XML CRUD (Create Read Update Delete) en C#

1. Iniciamos creando un formulario dentro de nuestro proyecto de Microsoft Visual Studio 2013
    con siguientes características.





























2. Se utilizara el archivo DatosCliente.xml para las operaciones, primero se filtraran los resultados a mostrar utilizando Linq to xml.
_________________________________________________________________________________

<?xml version="1.0" encoding="utf-8"?>
<DatosCliente>
  <Clientes>
    <Dni>14117934</Dni>
    <Nombres>Nelson</Nombres>
    <Apellidos>Rojas Gonzales</Apellidos>
    <Telefono>983757625</Telefono>
    <Email>johnelgr@gmail.com</Email>
    <Sexo>masculino</Sexo>
  </Clientes>
  <Clientes>
    <Dni>18116712</Dni>
    <Nombres>eric</Nombres>
    <Apellidos>quispe</Apellidos>
    <Telefono>2324567</Telefono>
    <Email>rebe@gmail.com</Email>
    <Sexo>masculino</Sexo>
  </Clientes>
  <Clientes>
    <Dni>15671298</Dni>
    <Nombres>julio</Nombres>
    <Apellidos>roman</Apellidos>
    <Telefono>142346</Telefono>
    <Email>julio@gmail.com</Email>
    <Sexo>Masculino</Sexo>
  </Clientes>
  <Clientes>
    <Dni>12345678</Dni>
    <Nombres>leticia</Nombres>
    <Apellidos>cuellar vega</Apellidos>
    <Telefono>234567</Telefono>
    <Email>leti@gmail.com</Email>
    <Sexo>femenino</Sexo>
  </Clientes>
  <Clientes>
    <Dni>98765432</Dni>
    <Nombres>miriam</Nombres>
    <Apellidos>carrasco lopez</Apellidos>
    <Telefono>234567</Telefono>
    <Email>miriam@gmail.com</Email>
    <Sexo>femenino</Sexo>
  </Clientes>
  <Clientes>
    <Dni>10113456</Dni>
    <Nombres>rebeca</Nombres>
    <Apellidos>perez sierra</Apellidos>
    <Telefono>2324567</Telefono>
    <Email>rebe@gmail.com</Email>
    <Sexo>femenino</Sexo>
  </Clientes>
  <Clientes>
    <Dni>47893885</Dni>
    <Nombres>manuel</Nombres>
    <Apellidos>quispe carrasco</Apellidos>
    <Telefono>305030</Telefono>
    <Email>manuel@gmail.com</Email>
    <Sexo>masculino</Sexo>
  </Clientes>
  <Clientes>
    <Dni>98723145</Dni>
    <Nombres>jorge</Nombres>
    <Apellidos>tello</Apellidos>
    <Telefono>123456789</Telefono>
    <Email>jorge@gmail.com</Email>
    <Sexo>masculino</Sexo>
  </Clientes>
</DatosCliente>
_________________________________________________________________________________

3. Agregaremos una clase Cliente.cs a nuestro proyecto para  realizar las operaciones de Agregar,Actualizar,Eliminar,Buscar,Mostrar.

_________________________________________________________________________________

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;

namespace XmLtoLinQ
{

    class Cliente
    {

        private string cliDni;
        private string cliNombres;
        private string cliApellidos;
        private string cliTelefono;
        private string cliEmail;
        private string cliSexo;

     
        //Constructor sin Parametro
        public Cliente() { }

        //Constructor con Parametro
        public Cliente(string cliDni,string cliNombres,string cliApellidos,string cliTelefono,string cliEmail,string cliSexo)
        {
            this.CliDni = cliDni;
            this.CliNombres = cliNombres;
            this.CliApellidos = cliApellidos;
            this.CliTelefono = cliTelefono;
            this.CliEmail = cliEmail;
            this.CliSexo = cliSexo;
        }

        XDocument DocXML;

        string path = "F:\\TallerProgramacion II 2017-I\\XmLtoLinQ\\XmLtoLinQ\\DatosXml\\DatosCliente.xml";

        //========================= AGREGAR REGISTROS ======================
        public void Agregar(string cliDni, string cliNombres, string cliApellidos, string cliTelefono, string cliEmail, string cliSexo)
        {
            try
            {
                DocXML = XDocument.Load(path);

                XElement NuevoRegistro = new XElement("Clientes",
                        new XElement("Dni", cliDni),
                        new XElement("Nombres", cliNombres),
                        new XElement("Apellidos", cliApellidos),
                        new XElement("Telefono", cliTelefono),
                        new XElement("Email", cliEmail),
                        new XElement("Sexo", cliSexo));


                DocXML.Element("DatosCliente").Add(NuevoRegistro);
                DocXML.Save(path);

            }
            catch (Exception ex)
            {

                throw ex.InnerException;
            }
        }


        //================== ACTUALIZAR REGISTROS ==========================
        public void Editar(string cliDni, string cliNombres, string cliApellidos, string cliTelefono, string cliEmail, string cliSexo)
        {

            DocXML = XDocument.Load(path);
            var items = (from item in DocXML.Descendants("Clientes")
                         where item.Element("Dni").Value == cliDni
                         select item).ToList();
            foreach (var item in items)
            {
                item.Element("Dni").Value = cliDni;
                item.Element("Nombres").Value = cliNombres;
                item.Element("Apellidos").Value = cliApellidos;
                item.Element("Telefono").Value = cliTelefono;
                item.Element("Email").Value = cliEmail;
                item.Element("Sexo").Value = cliSexo;
             
            }
            DocXML.Save(path);
           
        }


        //============================ ELIMINAR REGISTROS ===================
        public void Eliminar(string cliDni)
        {
            DocXML = XDocument.Load(path);

            var EliminarNodo = from NodoEliminar in DocXML.Descendants("Clientes")
                               where NodoEliminar.Element("Dni").Value == cliDni
                               select NodoEliminar;
            EliminarNodo.Remove();
            DocXML.Save(path);
 
        }


        //==================== LISTAR REGISTROS ==============================
        public Array listaClientes()
        {
            XElement root = XElement.Load(path);
            var clientes = from item in root.Descendants("Clientes")

                           select new
                           {
                               Dni = item.Element("Dni").Value,
                               Nombres = item.Element("Nombres").Value,
                               Apellidos = item.Element("Apellidos").Value,
                               Telefono = item.Element("Telefono").Value,
                               Email = item.Element("Email").Value,
                               Sexo = item.Element("Sexo").Value

                           };


            return clientes.ToArray();
        }


        //==================== BUSCAR POR APELLIDO ==========================

        public Array listarxApellido(string textoBuscar)
        {
            XElement xdoc = XElement.Load(path);
         
            var cliente = from item in xdoc.Descendants("Clientes").
                    Where(c => c.Element("Apellidos").Value.Contains(textoBuscar))

                          select new
                          {
                              Dni = item.Element("Dni").Value,
                              Nombres = item.Element("Nombres").Value,
                              Apellidos = item.Element("Apellidos").Value,
                              telefono = item.Element("Telefono").Value,
                              Email = item.Element("Email").Value,
                              sexo = item.Element("Sexo").Value

                          };



            return cliente.ToArray();
        }



        //Encapsulamiento de Atributos
        public string CliDni
        {
            get { return cliDni; }
            set { cliDni = value; }
        }


        public string CliNombres
        {
            get { return cliNombres; }
            set { cliNombres = value; }
        }

        public string CliApellidos
        {
            get { return cliApellidos; }
            set { cliApellidos = value; }
        }


        public string CliTelefono
        {
            get { return cliTelefono; }
            set { cliTelefono = value; }
        }


        public string CliEmail
        {
            get { return cliEmail; }
            set { cliEmail = value; }
        }


        public string CliSexo
        {
            get { return cliSexo; }
            set { cliSexo = value; }
        }

    }
}
_________________________________________________________________________________

4. En nuestro formulario frmCliente.cs  realizamos  lo siguiente.
   
//instancia a la  clase
Cliente cli = new Cliente();

------------------------------------------------------------------------------------------------------------------------
 private void btnGuardar_Click(object sender, EventArgs e)
        {
            string dni =txtDni.Text;
            string nombre = txtNombres.Text;
            string apellido = txtApellidos.Text;
            string telefono = txtTelefono.Text;
            string email = txtEmail.Text;
            string sexo = txtSexo.Text;

            cli.Agregar(dni, nombre, apellido, telefono, email, sexo);
            MessageBox.Show("Se inserto Correctamente el Registro ;) ;)");
            listar();
        }


------------------------------------------------------------------------------------------------------------------------
public void listar()
        {
           this.dataListado.DataSource = cli.listaClientes();
        }

------------------------------------------------------------------------------------------------------------------------

private void frmCliente_Load(object sender, EventArgs e)
        {
            listar();    
        }

------------------------------------------------------------------------------------------------------------------------

 private void btnEditar_Click(object sender, EventArgs e)
        {
            string dni = txtDni.Text;
            string nombre = txtNombres.Text;
            string apellido = txtApellidos.Text;
            string telefono = txtTelefono.Text;
            string email = txtEmail.Text;
            string sexo = txtSexo.Text;

            cli.Editar(dni, nombre, apellido, telefono, email, sexo);
            MessageBox.Show("Se Actualizo Correctamente el Registro :) :)");
            listar();
        }

------------------------------------------------------------------------------------------------------------------------

private void dataListado_DoubleClick(object sender, EventArgs e)
        {
            this.txtDni.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["Dni"].Value);
            this.txtNombres.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["Nombres"].Value);
            this.txtApellidos.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["Apellidos"].Value);
            this.txtTelefono.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["Telefono"].Value);
            this.txtEmail.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["Email"].Value);
            this.txtSexo.Text = Convert.ToString(this.dataListado.CurrentRow.Cells["Sexo"].Value);  
        }

------------------------------------------------------------------------------------------------------------------------

 private void btnEliminar_Click(object sender, EventArgs e)
        {
         
            try
            {
                DialogResult Opcion;
                Opcion = MessageBox.Show("Realmente desea Eliminar los Registros","Clientes",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
                if(Opcion==DialogResult.OK)
                {
                    string Codigo;

                    foreach(DataGridViewRow row in dataListado.Rows)
                    {
                       if(Convert.ToBoolean(row.Cells[0].Value))
                       {
                           Codigo = Convert.ToString(row.Cells[1].Value);
                     
                          cli.Eliminar(Codigo);

                           MessageBox.Show("Se Elimino Correctamente el Registro :( :(");
                       }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + ex.StackTrace);
            }

            listar();
        }

------------------------------------------------------------------------------------------------------------------------

private void chkEliminar_CheckedChanged(object sender, EventArgs e)
        {
            if(chkEliminar.Checked)
            {
                this.dataListado.Columns[0].Visible = true;
            }
            else
            {
                this.dataListado.Columns[0].Visible = false;
            }
        }

------------------------------------------------------------------------------------------------------------------------

private void dataListado_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == dataListado.Columns["Eliminar"].Index)
            {
                DataGridViewCheckBoxCell ChkEliminar = (DataGridViewCheckBoxCell)dataListado.Rows[e.RowIndex].Cells["Eliminar"];
                ChkEliminar.Value = !Convert.ToBoolean(ChkEliminar.Value);
            }
        }


------------------------------------------------------------------------------------------------------------------------
private void btnLimpiar_Click(object sender, EventArgs e)
        {
            txtDni.Text = "";
            txtNombres.Text = "";
            txtApellidos.Text = "";
            txtTelefono.Text = "";
            txtEmail.Text = "";
            txtSexo.Text = "";
        }

------------------------------------------------------------------------------------------------------------------------
public void listarxApellido(string textoBuscar)
        {
           this.dataListado.DataSource = cli.listarxApellido(textoBuscar);
        }

------------------------------------------------------------------------------------------------------------------------
private void txtBuscaPorNombre_KeyPress(object sender, KeyPressEventArgs e)
        {
            listarxApellido(txtBuscaPorNombre.Text);
         
        }

------------------------------------------------------------------------------------------------------------------------
private void btnBuscar_Click(object sender, EventArgs e)
        {

            listarxApellido(txtBuscaPorNombre.Text);
        }

------------------------------------------------------------------------------------------------------------------------

LINQ to XML  CRUD (Create Read Update Delete) en C#

Descarga el código fuente


Share:

DISCULPA LAS MOLESTIAS, LA PUBLICIDAD NOS AYUDA

Para descargar Aguarda 5 seg. y luego hacer click en saltar publicidad...Gracias !!

Saltar Publicidad

Translate

FACEBOOK

Ayúdanos con tu donación !

Etiquetas

twitter.com

Páginas vistas

Labels