Base de datos en modo desconectado (SQL Server)
En este ejercicio trabajamos con una base de datos en modo desconectado (pasando los datos a un Data Set y trabajando en él). A continuación, la pantalla gráfica de la aplicación y su código:
Código
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace Laboratorio2
{
public partial class Form1 : Form
{
public int indice = 0;
public SqlConnection conexion = new SqlConnection("Data Source=DANY-PC\\SQLEXPRESS;Initial Catalog=Video;Integrated Security=True");
public SqlDataAdapter adaptador;
public DataSet datos = new DataSet();
public SqlCommandBuilder constructorComandos;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
adaptador = new SqlDataAdapter("Select * From Peliculas", conexion);
conexion.Open();
int numRenglones = adaptador.Fill(datos, "Peliculas");
constructorComandos = new SqlCommandBuilder(adaptador);
conexion.Close();
if (datos.Tables[0].Rows.Count > 0)
{
MostrarDatos(0);
btn_borrar.Enabled = true;
btn_modificar.Enabled = true;
btn_registrar.Enabled = false;
btn_modificar.Focus();
}
else
{
MessageBox.Show("La Base de Datos está Vacía", "Carga de la Base de Datos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
Limpiar();
}
}
public void Limpiar()
{
txt_noPelicula.Clear();
txt_titulo.Clear();
rbtn_dvd.Checked = false;
rbtn_bluray.Checked = false;
rbtn_otro.Checked = false;
txt_cantidad.Clear();
cmb_genero.Text = "";
btn_registrar.Enabled = true;
btn_modificar.Enabled = false;
btn_borrar.Enabled = false;
txt_registros.Clear();
indice = 0;
}
private void btn_limpiar_Click(object sender, EventArgs e)
{
Limpiar();
}
public void MostrarDatos(int i)
{
txt_titulo.Clear();
rbtn_dvd.Checked = false;
rbtn_bluray.Checked = false;
rbtn_otro.Checked = false;
txt_cantidad.Clear();
cmb_genero.Text = "";
txt_noPelicula.Text = datos.Tables["Peliculas"].Rows[i]["No_Pelicula"].ToString();
txt_titulo.Text = datos.Tables["Peliculas"].Rows[i]["Titulo"].ToString();
switch (datos.Tables["Peliculas"].Rows[i]["Formato"].ToString())
{
case "Blu-Ray":
rbtn_bluray.Checked = true;
break;
case "DVD":
rbtn_dvd.Checked = true;
break;
case "Otro":
rbtn_otro.Checked = true;
break;
}
txt_cantidad.Text = datos.Tables["Peliculas"].Rows[i]["Cantidad"].ToString();
switch (datos.Tables["Peliculas"].Rows[i]["Genero"].ToString())
{
case "Acción":
cmb_genero.SelectedIndex = 0;
break;
case "Comedia":
cmb_genero.SelectedIndex = 1;
break;
case "Infantil":
cmb_genero.SelectedIndex = 2;
break;
case "Romance":
cmb_genero.SelectedIndex = 3;
break;
}
txt_registros.Text = (i + 1) + " de " + datos.Tables["Peliculas"].Rows.Count;
btn_borrar.Enabled = true;
btn_modificar.Enabled = true;
btn_registrar.Enabled = false;
}
private void btn_inicio_Click(object sender, EventArgs e)
{
indice = 0;
MostrarDatos(indice);
}
private void btn_final_Click(object sender, EventArgs e)
{
indice = datos.Tables[0].Rows.Count - 1;
MostrarDatos(indice);
}
private void btn_anterior_Click(object sender, EventArgs e)
{
if (indice > 0)
{
indice = indice - 1;
MostrarDatos(indice);
}
}
private void btn_posterior_Click(object sender, EventArgs e)
{
if (indice < datos.Tables[0].Rows.Count - 1)
{
indice = indice + 1;
MostrarDatos(indice);
}
}
private void btn_salir_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void btn_registrar_Click(object sender, EventArgs e)
{
DataRow Registro;
//Obtener el registro
Registro = datos.Tables["Peliculas"].NewRow();
Registro["No_Pelicula"] = Convert.ToInt16(txt_noPelicula.Text);
Registro["Titulo"] = txt_titulo.Text;
if (rbtn_bluray.Checked == true)
{
Registro["Formato"] = "Blu-Ray";
}
else
{
if (rbtn_dvd.Checked == true)
{
Registro["Formato"] = "DVD";
}
else
{
Registro["Formato"] = "Otro";
}
}
Registro["Cantidad"] = Convert.ToInt16(txt_cantidad.Text);
if (cmb_genero.SelectedIndex == 0)
{
Registro["Genero"] = "Acción";
}
else
{
if (cmb_genero.SelectedIndex == 1)
{
Registro["Genero"] = "Comedia";
}
else
{
if (cmb_genero.SelectedIndex == 2)
{
Registro["Genero"] = "Infantil";
}
else
{
Registro["Genero"] = "Romance";
}
}
}
//Añadir el nuevo registro a la tabla
datos.Tables["Peliculas"].Rows.Add(Registro);
}
private void btn_modificar_Click(object sender, EventArgs e)
{
DataRow Registro;
//Obtener el registro a modificar
Registro = datos.Tables["Peliculas"].Rows[indice];
Registro["No_Pelicula"] = Convert.ToInt16(txt_noPelicula.Text);
Registro["Titulo"] = txt_titulo.Text;
if (rbtn_bluray.Checked == true)
{
Registro["Formato"] = "Blu-Ray";
}
else
{
if (rbtn_dvd.Checked == true)
{
Registro["Formato"] = "DVD";
}
else
{
Registro["Formato"] = "Otro";
}
}
Registro["Cantidad"] = Convert.ToInt16(txt_cantidad.Text);
if (cmb_genero.SelectedIndex == 0)
{
Registro["Genero"] = "Acción";
}
else
{
if (cmb_genero.SelectedIndex == 1)
{
Registro["Genero"] = "Comedia";
}
else
{
if (cmb_genero.SelectedIndex == 2)
{
Registro["Genero"] = "Infantil";
}
else
{
Registro["Genero"] = "Romance";
}
}
}
DataTable Tabla;
//Obtener tabla con registro modificado
Tabla = datos.Tables["Peliculas"].GetChanges(DataRowState.Modified);
//Actualizar el almacén (adaptador)
adaptador.Update(Tabla);
//Confirmar cambios
datos.Tables["Peliculas"].AcceptChanges();
}
private void btn_borrar_Click(object sender, EventArgs e)
{
DataRow Registro;
//Obtener el registro a borrar
Registro = datos.Tables["Peliculas"].Rows[indice];
Registro.Delete(); //Borra el registro
//Obtener la tabla con el registro eliminado
DataTable tabla;
tabla = datos.Tables["Peliculas"].GetChanges(DataRowState.Deleted);
//Actualizar el almacén (adaptador)
adaptador.Update(tabla);
//Confirmar los cambios
datos.Tables["Peliculas"].AcceptChanges();
//Ir al primer registro
btn_inicio.PerformClick();
}
private void btn_actualizar_Click(object sender, EventArgs e)
{
adaptador.Update(datos, "Peliculas");
if (datos.Tables[0].Rows.Count > 0)
{
MostrarDatos(0);
btn_borrar.Enabled = true;
btn_modificar.Enabled = true;
btn_registrar.Enabled = false;
btn_modificar.Focus();
}
}
}
}