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.