private void listGenres_SelectedIndexChanged(object sender, EventArgs e)
{
SqlDataReader rdr = null;
string strArtist = null;
SqlCommand cmd = null;
string lesGenres = null;
listArtistes.Items.Clear();
listAlbums.Items.Clear();
// REFRESH DES ARTISTES POUR LE GENRE SELECTIONNE
// Détection si il y a plusieurs Genres sélectionnés
if (listGenres.SelectedItems.Count > 1)
{
// Définition du premier argument Genre
lesGenres = "Genre = '" + listPlaylists.Items[0] + "' ";
// Parcours des autres arguments OR Genre = 'plop' OR Genre = 'plop2' ...
for (int i = 1; i < listPlaylists.SelectedItems.Count; i++)
{
lesGenres = lesGenres + "OR Genre = '" + listPlaylists.Items[i] + "'";
}
}
if(listPlaylists.SelectedItem.ToString().Equals("Toutes les playlists"))
{
// Requete pour la récupération des artistes en fonctions des playlists et du Genre
strArtist = "SELECT DISTINCT Artist FROM Tracks WHERE @Genre";
}
else
{
// Requete pour la récupération des artistes en fonctions de la playlist et du Genre
strArtist = "SELECT DISTINCT Artist FROM Tracks WHERE Tracks.TrackID IN( SELECT TrackID FROM PlaylistDetails WHERE PlaylistID = @IDPlaylist ) AND @Genre";
cmd.Parameters.Add("@IDPlaylist", SqlDbType.Int).Value = searchPlaylistsID(listPlaylists.SelectedItem.ToString());
}
try
{
// Instanciation de la requete SQL avec la connection à la base de données
cmd = new SqlCommand(strArtist, oConnection);
// Renseignement des différents paramètres
cmd.Parameters.Add("@Genre", SqlDbType.NVarChar).Value = lesGenres;
MessageBox.Show(strArtist);
// Ouverture de la base de données
oConnection.Open();
// Execution de la commande SQL
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
listArtistes.Items.Add(rdr[0]);
}
}
finally
{
// Fermeture du SQLReader
if (rdr != null)
{
rdr.Close();
}
// Fermeture de la connection
if (oConnection != null)
{
oConnection.Close();
}
}