CRUD (Crear, Leer, Actualizar, Eliminar) en Windows Forms con C# y SQL Server (ADO.NET)

 



A continuación te muestro un ejemplo de una aplicación CRUD (Crear, Leer, Actualizar, Eliminar) en Windows Forms con C# y SQL Server.



✅ Escenario

Supongamos que tienes una tabla en SQL Server llamada Usuarios con esta estructura:

CREATE TABLE Usuarios (
    Id INT PRIMARY KEY IDENTITY(1,1),
    Nombre NVARCHAR(100),
    Correo NVARCHAR(100)
);

✅ Diseño de Windows Forms (sencillo)

Agrega los siguientes controles a tu formulario (Form1.cs):

  • TextBox llamado txtNombre

  • TextBox llamado txtCorreo

  • Button llamado btnAgregar

  • Button llamado btnActualizar

  • Button llamado btnEliminar

  • DataGridView llamado dgvUsuarios


✅ Código completo del formulario Form1.cs

using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace CrudWinForms
{
    public partial class Form1 : Form
    {
        string connectionString = "Server=localhost;Database=Prueba;Trusted_Connection=True;";
        int idSeleccionado = 0;

        public Form1()
        {
            InitializeComponent();
            CargarDatos();
        }

        private void CargarDatos()
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                string query = "SELECT * FROM Usuarios";
                SqlDataAdapter da = new SqlDataAdapter(query, conn);
                DataTable dt = new DataTable();
                da.Fill(dt);
                dgvUsuarios.DataSource = dt;
            }
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                string query = "INSERT INTO Usuarios (Nombre, Correo) VALUES (@Nombre, @Correo)";
                SqlCommand cmd = new SqlCommand(query, conn);
                cmd.Parameters.AddWithValue("@Nombre", txtNombre.Text);
                cmd.Parameters.AddWithValue("@Correo", txtCorreo.Text);

                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            CargarDatos();
            LimpiarCampos();
        }

        private void btnActualizar_Click(object sender, EventArgs e)
        {
            if (idSeleccionado == 0) return;

            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                string query = "UPDATE Usuarios SET Nombre=@Nombre, Correo=@Correo WHERE Id=@Id";
                SqlCommand cmd = new SqlCommand(query, conn);
                cmd.Parameters.AddWithValue("@Nombre", txtNombre.Text);
                cmd.Parameters.AddWithValue("@Correo", txtCorreo.Text);
                cmd.Parameters.AddWithValue("@Id", idSeleccionado);

                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            CargarDatos();
            LimpiarCampos();
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (idSeleccionado == 0) return;

            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                string query = "DELETE FROM Usuarios WHERE Id=@Id";
                SqlCommand cmd = new SqlCommand(query, conn);
                cmd.Parameters.AddWithValue("@Id", idSeleccionado);

                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
            }
            CargarDatos();
            LimpiarCampos();
        }

        private void dgvUsuarios_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0)
            {
                DataGridViewRow fila = dgvUsuarios.Rows[e.RowIndex];
                idSeleccionado = Convert.ToInt32(fila.Cells["Id"].Value);
                txtNombre.Text = fila.Cells["Nombre"].Value.ToString();
                txtCorreo.Text = fila.Cells["Correo"].Value.ToString();
            }
        }

        private void LimpiarCampos()
        {
            txtNombre.Clear();
            txtCorreo.Clear();
            idSeleccionado = 0;
        }
    }
}

✅ Consideraciones

  • Asegúrate de que tu DataGridView tenga el evento CellClick enlazado:

this.dgvUsuarios.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvUsuarios_CellClick);
  • Puedes mejorar este ejemplo usando validaciones, capas (DAL, BLL), y procedimientos almacenados si lo deseas.



Comentarios

Entradas populares de este blog

Aprende a Armar tu PC con el Simulador de Cisco 🖥️ Guía Paso a Paso

Librerías para generar reportes pdf desde java jsp

Exportar datos a Excel o csv de forma automática desde MySQL en Windows