Crud con C# y SQL Server | Blog Collective Cloud Peru Crud con C# y SQL Server TUTORIALES JULIO 14, 2015 WinRar Github Para los que recién empiezan a desarrollar aplicaciones de escritorio, siempre tienen dudas de como realizar un CRUD (Create, Read, Update y Delete) de un registro, En esta oportunidad lo haremos con C# y SQL Server. Hay muchas formas de hacer un CRUD y con distintos elementos windows forms. Lo importante es saber hacer un INSERT y luego procederemos con el UPDATE, DELETE y el SELEC para buscar un registro. Bueno vamos a por el tutorial. Crearemos el siguiente formulario con sus botones para cada acción del CRUD: http://blog.collectivecloudperu.com/crud-con-c-y-sql-server/[06/02/2016 2:15:15 p. m.] Crud con C# y SQL Server | Blog Collective Cloud Peru Usaremos los siguientes elementos: Registro de Clientes Tipo: Form Name: frmProductos StartPosition: CenterScreen Id Tipo: TextBox Name: txtId ReadOnly: True Nombre Tipo: TextBox Name: txtNombre CharacterCasing: Upper MaxLength: 50 Precio Tipo: TextBox Name: txtPrecio CharacterCasing: Upper MaxLength: 50 Stock Tipo: TextBox Name: txtStock CharacterCasing: Upper MaxLength: 50 Barra de Botones Tipo: ToolStrip Name: toolStrip1 Nuevo Tipo: ToolStripButton Name: tsbNuevo Text: Nuevo Guardar Tipo: ToolStripButton Name: tsbGuardar Text: Guardar Cancelar Tipo: ToolStripButton Name: tsbCancelar Text: Cancelar Eliminar Tipo: ToolStripButton Name: tsbEliminar Text: Nuevo Separador Tipo: ToolStripSeparator Name: toolStripSeparator1 http://blog.collectivecloudperu.com/crud-con-c-y-sql-server/[06/02/2016 2:15:15 p. m.] Crud con C# y SQL Server | Blog Collective Cloud Peru Buscar por Id Tipo: ToolStripLabel Name: tsbBuscarPorId Text: Buscar por Id: Texbox para Buscar por Id Tipo: ToolStripTextBox Name: tstId Buscar Tipo: ToolStripButton Name: tsbBuscar Text: Buscar Creamos la Base de Datos: productos.sql(sql_query_crud_produc tos.sql) 1 create database Productos; 2 3 use Productos; 4 5 create table postres ( 6 id int not null identity, 7 nombre varchar(50) not null, 8 precio decimal(6,2), 9 stock float, 10 constraint pk_postres primary key(id) 11 ); Ahora vamos con nuestro código. En los comentarios describo lo que hago en cada bloque de código: Nota: En el Github del código fuente, hay un WINRAR en donde esta todo el proyecto completo. Recuerda que tienes que tener instalado Net Framework 4.5, Microsoft Visual Studio Comunity 2015 RC y SQL Server 2014, tambien puedes descargarte los archivos en el botón WinRar que esta al inicio de este tutorial y correr el ejemplo. Form1.cs 1 // Instancio las Directivas. 2 using System; 3 using System; 4 using System.Collections.Generic; 5 using System.ComponentModel; 6 using System.Data; 7 using System.Drawing; 8 using System.Linq; http://blog.collectivecloudperu.com/crud-con-c-y-sql-server/[06/02/2016 2:15:15 p. m.] Crud con C# y SQL Server | Blog Collective Cloud Peru 9 using System.Text; 10 using System.Threading.Tasks; 11 using System.Windows.Forms; 12 using System.Data.SqlClient; 13 14 namespace crud 15 { 16 public partial class frmProductos : Form 17 { 18 // Realizo la Conexión a la Base de Datos 19 string connectionString = 20 @"Server=.\sqlexpress;Database=productos;Trusted_Connection=True;"; 21 bool nuevo; 22 23 public frmProductos() 24 { 25 InitializeComponent(); 26 } 27 28 // Cargo el Formulario y su estado para cada elemento. 29 private void frmProductos_Load(object sender, EventArgs e) 30 { 31 tsbNuevo.Enabled = true; 32 tsbGuardar.Enabled = false; 33 tsbCancelar.Enabled = false; 34 tsbEliminar.Enabled = false; 35 tstId.Enabled = true; 36 tsbBuscar.Enabled = true; 37 txtNombre.Enabled = false; 38 txtPrecio.Enabled = false; 39 } 40 41 private void txtId_TextChanged(object sender, EventArgs e) 42 { 43 44 } 45 46 private void tsbNuevo_Click(object sender, EventArgs e) 47 { 48 // Cargo el estado para el botón Nuevo y los demás elementos. 49 tsbNuevo.Enabled = false; 50 tsbGuardar.Enabled = true; 51 tsbCancelar.Enabled = true; 52 tsbEliminar.Enabled = false; 53 tstId.Enabled = false; 54 tsbBuscar.Enabled = false; 55 txtNombre.Enabled = true; 56 txtPrecio.Enabled = true; 57 txtStock.Enabled = true; 58 txtNombre.Focus(); 59 nuevo = true; 60 } http://blog.collectivecloudperu.com/crud-con-c-y-sql-server/[06/02/2016 2:15:15 p. m.] Crud con C# y SQL Server | Blog Collective Cloud Peru 61 62 private void tsbGuardar_Click(object sender, EventArgs e) 63 { 64 // Cuando hago click en el botón Nuevo que proceda la inserción de un 65 registro en la Base de Datos. 66 if (nuevo) 67 { 68 string sql = "INSERT INTO POSTRES (NOMBRE, PRECIO, STOCK)" 69 + "VALUES ('" + txtNombre.Text + "', '" + txtPrecio.Text 70 + "', '" + txtStock.Text + "')"; 71 72 SqlConnection con = new SqlConnection(connectionString); 73 SqlCommand cmd = new SqlCommand(sql, con); 74 cmd.CommandType = CommandType.Text; 75 con.Open(); 76 try 77 { 78 int i = cmd.ExecuteNonQuery(); 79 if (i > 0) 80 MessageBox.Show("Registro ingresado correctamente !"); 81 } 82 catch (Exception ex) 83 { 84 MessageBox.Show("Erro: " + ex.ToString()); 85 } 86 finally 87 { 88 // Cierro la Conexión. 89 con.Close(); 90 } 91 } 92 else 93 { 94 // Procedo a realizar la actualización del registro en la Base de 95 Datos. 96 string sql = "UPDATE POSTRES SET NOMBRE='" + txtNombre.Text + 97 "', PRECIO='" + txtPrecio.Text + 98 "', " + "STOCK='" + txtStock.Text + "'"; 99 100 SqlConnection con = new SqlConnection(connectionString); 101 SqlCommand cmd = new SqlCommand(sql, con); 102 cmd.CommandType = CommandType.Text; 103 con.Open(); 104 try 105 { 106 int i = cmd.ExecuteNonQuery(); 107 if (i > 0) 108 MessageBox.Show("Registro actualizado correctamente !"); 109 } 110 catch (Exception ex) 111 { 112 MessageBox.Show("Erro: " + ex.ToString()); http://blog.collectivecloudperu.com/crud-con-c-y-sql-server/[06/02/2016 2:15:15 p. m.] Crud con C# y SQL Server | Blog Collective Cloud Peru 113 } 114 finally 115 { 116 // Cierro la Conexión. 117 con.Close(); 118 } 119 } 120 121 // Defino los Estados para los elementos de mi Formulario después de 122 actualizar el registro. 123 tsbNuevo.Enabled = true; 124 tsbGuardar.Enabled = false; 125 tsbCancelar.Enabled = false; 126 tsbEliminar.Enabled = false; 127 tstId.Enabled = true; 128 tsbBuscar.Enabled = true; 129 txtNombre.Enabled = false; 130 txtPrecio.Enabled = false; 131 txtStock.Enabled = false; 132 txtId.Text = ""; 133 txtNombre.Text = ""; 134 txtPrecio.Text = ""; 135 txtStock.Text = ""; 136 } 137 138 private void tsbCancelar_Click(object sender, EventArgs e) 139 { 140 // Defino los Estados para los elementos de mi Formulario cuando hago 141 click en el botón Cancelar. 142 tsbNuevo.Enabled = true; 143 tsbGuardar.Enabled = false; 144 tsbCancelar.Enabled = false; 145 tsbEliminar.Enabled = false; 146 tstId.Enabled = true; 147 tsbBuscar.Enabled = true; 148 txtNombre.Enabled = false; 149 txtPrecio.Enabled = false; 150 txtStock.Enabled = false; 151 txtId.Text = ""; 152 txtNombre.Text = ""; 153 txtPrecio.Text = ""; 154 txtStock.Text = ""; 155 } 156 157 private void tsbEliminar_Click(object sender, EventArgs e) 158 { 159 // Si hago click en el botón eliminar procedo a eliminar en la Base de 160 Datos. 161 string sql = "DELETE FROM POSTRES WHERE ID=" + txtId.Text; 162 163 SqlConnection con = new SqlConnection(connectionString); 164 SqlCommand cmd = new SqlCommand(sql, con); http://blog.collectivecloudperu.com/crud-con-c-y-sql-server/[06/02/2016 2:15:15 p. m.] Crud con C# y SQL Server | Blog Collective Cloud Peru 165 cmd.CommandType = CommandType.Text; 166 con.Open(); 167 168 try 169 { 170 int i = cmd.ExecuteNonQuery(); 171 if (i > 0) 172 MessageBox.Show("Registro eliminado correctamente !"); 173 } 174 catch (Exception ex) 175 { 176 MessageBox.Show("Erro: " + ex.ToString()); 177 } 178 finally 179 { 180 // Cierro la Conexión. 181 con.Close(); 182 } 183 184 // Defino los Estados para los elementos de mi Formulario cuando hago 185 click en el botón Eliminar. 186 tsbNuevo.Enabled = true; 187 tsbGuardar.Enabled = false; 188 tsbCancelar.Enabled = false; 189 tsbEliminar.Enabled = false; 190 tstId.Enabled = true; 191 tsbBuscar.Enabled = true; 192 txtNombre.Enabled = false; 193 txtPrecio.Enabled = false; 194 txtStock.Enabled = false; 195 txtId.Text = ""; 196 txtNombre.Text = ""; 197 txtPrecio.Text = ""; 198 txtStock.Text = ""; 199 } 200 201 private void tsbBuscar_Click(object sender, EventArgs e) 202 { 203 // Cuando hago click en el botón Buscar, procedo a buscar en la Base 204 de Datos. 205 string sql = "SELECT * FROM POSTRES WHERE ID=" + tstId.Text; 206 207 SqlConnection con = new SqlConnection(connectionString); 208 SqlCommand cmd = new SqlCommand(sql, con); 209 cmd.CommandType = CommandType.Text; 210 SqlDataReader reader; 211 con.Open(); 212 213 try 214 { 215 reader = cmd.ExecuteReader(); 216 if (reader.Read()) http://blog.collectivecloudperu.com/crud-con-c-y-sql-server/[06/02/2016 2:15:15 p. m.] Crud con C# y SQL Server | Blog Collective Cloud Peru 217 { 218 // Defino los Estados para los elementos de mi Formulario 219 cuando hago click en el botón Buscar. 220 tsbNuevo.Enabled = false; 221 tsbGuardar.Enabled = true; 222 tsbCancelar.Enabled = true; 223 tsbEliminar.Enabled = true; 224 tstId.Enabled = false; 225 tsbBuscar.Enabled = false; 226 txtNombre.Enabled = true; 227 txtPrecio.Enabled = true; 228 txtStock.Enabled = true; 229 txtNombre.Focus(); 230 txtId.Text = reader[0].ToString(); 231 txtNombre.Text = reader[1].ToString(); 232 txtPrecio.Text = reader[2].ToString(); 233 txtStock.Text = reader[3].ToString(); 234 nuevo = false; 235 } 236 else 237 MessageBox.Show("Ningun registro encontrado con el Id 238 ingresado !"); 239 } 240 catch (Exception ex) 241 { 242 MessageBox.Show("Erro: " + ex.ToString()); 243 } 244 finally 245 { 246 // Cierro la Conexión. 247 con.Close(); 248 } 249 250 tstId.Text = ""; 251 252 } 253 254 private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { } private void btnSalir_Click(object sender, EventArgs e) { // Cuando hago click en el botón Salir cierro el formulario. this.Close(); } } } Listo ! http://blog.collectivecloudperu.com/crud-con-c-y-sql-server/[06/02/2016 2:15:15 p. m.] Crud con C# y SQL Server | Blog Collective Cloud Peru Espero les sirva de mucho el Tutorial. Sígueme en Twitter: @pepoflex Hasta nuestro siguiente artículo ! http://blog.collectivecloudperu.com/crud-con-c-y-sql-server/[06/02/2016 2:15:15 p. m.]