Espero que me haya explicado lo bastante para que entiendas pero en todo caso si no sabes POO (Programación orientada a objetos) y ADO.NET (Componentes de .NET para tratar base de datos), entonces te costara.
public partial class FRM_Main : Form
{
List<CLS_Genero> tListaGenero = new List<CLS_Genero>(); // Array de CLS_Genero
List<CLS_Pelicula> tListaPelicula = new List<CLS_Pelicula>(); // Array de CLS_Pelicula
public FRM_Main()
{
InitializeComponent(); // Esto es por defecto, es para inicializar los componentes de la GUI
}
private void FRM_Main_Load(object sender, EventArgs e)
{
cargarGenero(); // Llamamos la funcion para cargar el array con generos y mostrar en el listbox
}
private void LSB_Categorias_Click(object sender, EventArgs e)
{
// Aquí con el index seleccionado en el listbox obtenemos el codigo del genero y pasamos como argumento
// a la función para posteriormente obtener todas las peliculas de este genero
cargarPeliculas(tListaGenero.ElementAt(LSB_Categorias.SelectedIndex).getCodigo());
}
private void CMB_Pelicula_SelectedIndexChanged(object sender, EventArgs e)
{
// Aquí con el index seleccionado en el combobox obtenemos el codigo de la pelicula
// y nuevamente pasamos como argumento a la funcion para obtener la lista de alguiler
// relacionada con esta pelicula
cargarAlquiler(tListaPelicula.ElementAt(CMB_Pelicula.SelectedIndex).getCodigo());
}
// No servira para cargar todos los generos disponibles en la base de datos
private void cargarGenero()
{
// Limpiamos el listbox
LSB_Categorias.Items.Clear();
// Limpiamos el array
tListaGenero.Clear();
// SqlDataReader <= Esta clase nos sirve para leer de forma secuencial en una base de datos
// Aquí le paso mi query y el resultado lo almaceno en el objeto "tSqlReader"
SqlDataReader tSqlReader = CLS_Funciones.sqlQuery("SELECT cod_gen, des_gen FROM Genero");
// Aquí le digo, mientras lea, es decir, mientras haya algo pa leer que siga
while (tSqlReader.Read())
{
// Aquí instanciamos nuevo objeto y le paso como argumentos el codigo de genero y el nombre
CLS_Genero tGenero = new CLS_Genero(tSqlReader.GetValue(0).ToString(), tSqlReader.GetValue(1).ToString());
// Aquí le añado al array de generos
tListaGenero.Add(tGenero);
// Aquí añado el nombre al listbox
LSB_Categorias.Items.Add(tSqlReader.GetValue(1).ToString());
}
// Cierro la conexion a la base de datos
CLS_Funciones.cerrarConexion();
}
// No servira para cargar todos las peliculas disponibles de un genero especifico
private void cargarPeliculas(String sCodigoGenero)
{
// Limpìamos el combobox
CMB_Pelicula.Items.Clear();
// Limpiamos el array de peliculas
tListaPelicula.Clear();
// Aquí, otra vez le paso mi query y el resultado lo almaceno en el objeto "tSqlReader"
SqlDataReader tSqlReader = CLS_Funciones.sqlQuery("SELECT cod_pel, nom_pel FROM peliculas WHERE cod_gen = '" + sCodigoGenero + "'");
// Aquí le digo, mientras lea, es decir, mientras haya algo pa leer que siga
while (tSqlReader.Read())
{
// Aquí instanciamos nuevo objeto y le paso como argumentos el codigo de genero y el nombre
CLS_Pelicula tPelicula = new CLS_Pelicula(tSqlReader.GetValue(0).ToString(), tSqlReader.GetValue(1).ToString());
// Aquí le añado al array de peliculas
tListaPelicula.Add(tPelicula);
// Aquí añado el nombre al combobox
CMB_Pelicula.Items.Add(tSqlReader.GetValue(1).ToString());
}
// Cierro la conexion a la base de datos
CLS_Funciones.cerrarConexion();
}
// No servira para cargar todos los alquileres disponibles de una pelicula especifica
private void cargarAlquiler(String sCodigoPelicula)
{
// Mi consulta
String sQuery = "SELECT a.fecha_pres, a.fecha_dev, da.num_alq, da.cant " +
"FROM alquiler a INNER JOIN detalle_alquiler da " +
"ON a.num_alq = da.num_alq " +
"AND da.cod_pel = '" + sCodigoPelicula + "'";
// SqlDataAdapter <= Es un clase que nos sirve para obtener o guardar datos
// Le paso mi query y la conexion a la base de datos
SqlDataAdapter tSqlDataAdapter = new SqlDataAdapter(sQuery, CLS_Funciones.CST_CONNECTION_STRING);
// SqlCommandBuilder <= es una clase que nos sirve para establecer los cambios realizados
SqlCommandBuilder tCommandBuilder = new SqlCommandBuilder(tSqlDataAdapter);
// Esto es una tabla de base de datos pero en memoria, o sea, virtual
DataTable tTabla = new DataTable();
// Con el metodo Fill lleno la tabla con el resultado obtenido de la base de datos
tSqlDataAdapter.Fill(tTabla);
// Muestro los datos en el DataGridView
DGV_Alquiler.DataSource = tTabla;
}
}
Saludos.