Hola, continuemos con la segunda parte de CRUD con Tablas Relacionadas (Proyecto completo), en esta ocasión realizaremos este tutorial con programación orientada a objetos (Modificaremos el tutorial anterior).
Base de datos
Para esta práctica, teníamos la tabla productos, marcas y categorías, como clave primaria id producto.
Capa de acceso a datos
Clase conexión
class ConexionBD { static private string CadenaConexion = "Server=DESKTOP-4FVONF2\\SQLEXPRESS;DataBase=PRACTICA_TABLAS;Integrated Security=true"; private SqlConnection Conexion= new SqlConnection(CadenaConexion); public SqlConnection AbrirConexion() { if (Conexion.State == ConnectionState.Closed) Conexion.Open(); return Conexion; } public SqlConnection CerrarConexion() { if (Conexion.State == ConnectionState.Open) Conexion.Close(); return Conexion; } }
Clase Producto
class ClsProductos { private ConexionBD Conexion = new ConexionBD(); private SqlCommand Comando = new SqlCommand(); private SqlDataReader LeerFilas; //ATRIBUTOS private int idprod; private int idCategoria; private int idMarca; private string descripcion; private double precio; //metodos get y set public int _Idprod { get { return idprod; } set { idprod = value; } } public int _IdCategoria { get { return idCategoria; } set { idCategoria = value; } } public int _IdMarca { get { return idMarca; } set { idMarca = value; } } public string _Descripcion { get { return descripcion; } set { descripcion = value; } } public double _Precio { get { return precio; } set { precio = value; } } //METODOS/FUNCIONES public DataTable ListarCategorias() { DataTable Tabla = new DataTable(); Comando.Connection = Conexion.AbrirConexion(); Comando.CommandText = "ListarCategorias"; Comando.CommandType = CommandType.StoredProcedure; LeerFilas = Comando.ExecuteReader(); Tabla.Load(LeerFilas); LeerFilas.Close(); Conexion.CerrarConexion(); return Tabla; } public DataTable ListarMarcas() { DataTable Tabla = new DataTable(); Comando.Connection = Conexion.AbrirConexion(); Comando.CommandText = "ListarMarcas"; Comando.CommandType = CommandType.StoredProcedure; LeerFilas = Comando.ExecuteReader(); Tabla.Load(LeerFilas); LeerFilas.Close(); Conexion.CerrarConexion(); return Tabla; } public DataTable ListarProductos() { DataTable Tabla = new DataTable(); Comando.Connection = Conexion.AbrirConexion(); Comando.CommandText = "ListarProductos"; Comando.CommandType = CommandType.StoredProcedure; LeerFilas = Comando.ExecuteReader(); Tabla.Load(LeerFilas); LeerFilas.Close(); Conexion.CerrarConexion(); return Tabla; } public void InsertarProductos() { Comando.Connection = Conexion.AbrirConexion(); Comando.CommandText = "AgregarProducto"; Comando.CommandType = CommandType.StoredProcedure; Comando.Parameters.AddWithValue("@idcategoria", idCategoria); Comando.Parameters.AddWithValue("@idmarca", idMarca); Comando.Parameters.AddWithValue("@descrip", descripcion); Comando.Parameters.AddWithValue("@prec", precio); Comando.ExecuteNonQuery(); Comando.Parameters.Clear(); } public void EditarProductos() { Comando.Connection = Conexion.AbrirConexion(); Comando.CommandText = "update PRODUCTOS set IDCATEGORIA="+idCategoria+",IDMARCA="+idMarca+",DESCRIPCION='"+descripcion+"',PRECIO="+precio+" WHERE IDPROD="+idprod; Comando.CommandType = CommandType.Text; Comando.ExecuteNonQuery(); Conexion.CerrarConexion(); } public void EliminarProducto() { Comando.Connection = Conexion.AbrirConexion(); Comando.CommandText = "delete PRODUCTOS where IDPROD="+idprod; Comando.CommandType = CommandType.Text; Comando.ExecuteNonQuery(); Conexion.CerrarConexion(); } }
Capa de presentación
Formulario producto
- Diseño
- Código
public partial class PRODUCTOS : Form { ClsProductos objproducto = new ClsProductos(); string Operacion = "Insertar"; string idprod; private void PRODUCTOS_Load(object sender, EventArgs e){ //CARGAR LISTAS EN COMBOBOXS/ DATAGRIDVIEW ListarCategorias(); ListarMarcas(); ListarProductos(); } private void ListarCategorias() { ClsProductos objProd = new ClsProductos(); CmbCategoria.DataSource = objProd.ListarCategorias(); CmbCategoria.DisplayMember = "CATEGORIA"; CmbCategoria.ValueMember = "IDCATEG"; } private void ListarMarcas() { ClsProductos objProd = new ClsProductos(); CmbMarca.DataSource = objProd.ListarMarcas(); CmbMarca.DisplayMember = "MARCA"; CmbMarca.ValueMember = "IDMARCA"; } private void ListarProductos() { ClsProductos objprod = new ClsProductos(); dataGridView1.DataSource = objprod.ListarProductos(); } private void LimpiarFormulario() { txtDescripcion.Clear(); txtPrecio.Clear(); } private void btnAgregar_Click(object sender, EventArgs e) { if (Operacion == "Insertar") { objproducto._IdCategoria= Convert.ToInt32(CmbCategoria.SelectedValue); objproducto._IdMarca= Convert.ToInt32(CmbMarca.SelectedValue); objproducto._Descripcion= txtDescripcion.Text; objproducto._Precio= Convert.ToDouble(txtPrecio.Text); objproducto.InsertarProductos(); MessageBox.Show("Se inserto correctamente"); } else if (Operacion == "Editar") { objproducto._IdCategoria = Convert.ToInt32(CmbCategoria.SelectedValue); objproducto._IdMarca = Convert.ToInt32(CmbMarca.SelectedValue); objproducto._Descripcion = txtDescripcion.Text; objproducto._Precio = Convert.ToDouble(txtPrecio.Text); objproducto._Idprod = Convert.ToInt32(idprod); objproducto.EditarProductos(); Operacion = "Insertar"; MessageBox.Show("Se edito correctamente"); } ListarProductos(); //Limpiar texboxs LimpiarFormulario(); } private void btnEditar_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { Operacion = "Editar"; CmbCategoria.Text = dataGridView1.CurrentRow.Cells["CATEGORIA"].Value.ToString(); CmbMarca.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString(); txtDescripcion.Text = dataGridView1.CurrentRow.Cells["DESCRIPCION"].Value.ToString(); txtPrecio.Text = dataGridView1.CurrentRow.Cells[4].Value.ToString(); idprod = dataGridView1.CurrentRow.Cells["ID"].Value.ToString(); } else MessageBox.Show("debe seleccionar una fila"); } private void btnEliminar_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count > 0) { objproducto._Idprod = Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value); objproducto.EliminarProducto(); MessageBox.Show("Se elimino satisfactoriamente"); ListarProductos(); } else MessageBox.Show("Seleccione una fila"); }
Los comentarios están cerrados.