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
llamadotxtNombre
-
TextBox
llamadotxtCorreo
-
Button
llamadobtnAgregar
-
Button
llamadobtnActualizar
-
Button
llamadobtnEliminar
-
DataGridView
llamadodgvUsuarios
✅ 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 eventoCellClick
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
Publicar un comentario