C# ile SQL Tabanlı MP3 Player Yapımı


Merhaba arkadaşlar. Bu yazımda C# ile Sql tabanlı mp3 player nasıl yapılır anlatacağım.

İlk olarak eğer araç kutunuzda media player yoksa nasıl eklenir ondan bahsetmek istiyorum.

Choose item dedikten sonra aşağıdaki resmi takip ediyoruz.

Bu işlemden sonra araç kutunuzdan media playe’ı forma ekleyebilirsiniz.

İlk olarak tasarım kısmıyla başlıyoruz.

1 listbox, media player ve buton kullanacağız.

Tasarım kısmını halledip araçlarımıza isim verdikten sonra sql’de database oluşturmaya geçiyoruz.

Ben ‘MediaPlayer’ isimli bir database oluşturdum. Sizde istediğiniz ismi verebilirsiniz.

Database’i oluşturduktan sonra tablomuzu oluşturmaya başlıyoruz.

Tablomuzda sadece 2 sütunumuz olacak. İlki müziğin adı, ikincisi ise müziğin dosya yolu. Data tipini nvarchar yapmamın sebebi ise eğer müzik adında veya yolunda japonca , korece gibi dillerden oluşan harfler var ise bu isimleri eksiksiz bir şekilde kaydetmek için nvarchar kullanmalıyız. Kaç karakter kullanacağınız ise size kalmış. Ufak bir proje olduğu için sayıyı arttırabilirsiniz.

Tablo adını Tbl_Muzikler olarak kaydettikten sonra artık kod kısmına geçebiliriz

using System.Data.SqlClient; //sql işlemlerini yapabilmek için sql kütüphanesini ekliyoruz.
namespace playlist_blog_yazisi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

//bağlantımızı global alanda tanımlıyoruz
SqlConnection baglanti= new SqlConnection(@"Data Source=TALHA-PC\SQLEXPRESS;Initial Catalog=MediaPlayer;Integrated Security=True"); 

void listele() //listele adında bir void oluşturuyoruz. Form yüklenince ve ekleme/silme gibi işlemlerden sonra bu voidi çağırmamız gerekicek
{
baglanti.Open();
SqlCommand komut = new SqlCommand("select muzikad from tbl_muzikler order by muzikad", baglanti); 
SqlDataReader dr = komut.ExecuteReader();
while (dr.Read())
{
listBox1.Items.Add(dr[0]).ToString();
//sadece müzik isimlerini çekmemiz yeterli olucak. müzik yolunu nerde kullanacağımızı ilerleyen kısımlarda göreceğiz
}
baglanti.Close();
}

private void Form1_Load(object sender, EventArgs e)
{
listele(); //form yüklenince databse de kayıtlı müzikleri listbox'a listeliyoruz
}

Listbox’a müzikleri listeleme işlemini bitirdikten sonra sql’e müzik kaydetme işlemine geçiyoruz.

Edit: media player’ın ses düzeyinin başlangıçta tam olmasını istiyorsanız axWindowsMediaPlayer1.settings.volume = 100; bu kodu load kısmına ekleyiniz.

string sarkiyol, sarkiad;

private void btnsarkiekle_Click(object sender, EventArgs e) //şarkı ekleme butonu
{
OpenFileDialog open = new OpenFileDialog(); //müzik eklemek için openfiledialog kullanacağız. isterseniz araç kısmından ekleyipte kullanabilirsiniz
open.Multiselect = true; //multiselect true yapıyoruz ki tek seferde birden çok müzik ekleyebilelim
open.Filter = "Music Files(*.mp3)|*.mp3"; //filterimiz ise mp3 formatındaki dosyalar. böylece mp3 formatı dışında veri eklemenin önüne geçmiş oluyoruz
if (open.ShowDialog() == DialogResult.OK) //eğer openfiledialog açılıp tamam denirse şunu şunu yap:
{
for (int i = 0; i <= open.SafeFileNames.Length - 1; i++) //eklemek istediğimiz şarkının isminı i adlı değişkende tutuyoruz
{
sarkiad = Convert.ToString(open.SafeFileNames[i]); //müzik ismini sarkiad isimli string'de tutuyorum
sarkiyol = Convert.ToString(open.FileNames[i]); //müzik yolunu ise sarkiyol isimli değişkende tutuyorum

//şimdi buraya bi if şartı eklememiz lazım. aynı şarkıyı birdaha sql'e eklememek için bunu yapmamız lazım.
if (listBox1.Items.Contains(sarkiad) == true) //eğer seçtiğimiz şarkı listbox'da var ise şunu yap
{
baglanti.Open();
//eğer eklemek istediğimiz şarkı listbox'da var ise müzik yolunu güncelliyorum. bunu yapmamın sebebi eğer müzik yolu değişmiş ise 
//müziği silip yeniden eklemek yerine direk müzik yolunu güncelliyoruz. böylece tekrar sil/ekle işlemlerine gerek kalmıyor.
//aynı zamanda aynı müzikten birkaç tane eklemenin önüne geçilmiş olunuyor.
SqlCommand komut = new SqlCommand("update tbl_muzikler set muzikyol=@p1 where muzikad=@p2", baglanti);
komut.Parameters.AddWithValue("@p1", sarkiyol);
komut.Parameters.AddWithValue("@p2", sarkiad);
komut.ExecuteNonQuery();
baglanti.Close();
}
else //eğer ekliyeceğimiz şarkı listbox'da yok ise şunu yap:
{
baglanti.Open();
//artık burda şarkı ekleme kısmına geçiyoruz. tbl_müzikler adlı tablomuza şarkının adını ve yolunu kaydediyoruz
SqlCommand komut = new SqlCommand("insert into tbl_muzikler (muzikad,muzikyol) values (@p1,@p2)", baglanti);
komut.Parameters.AddWithValue("@p1", sarkiad);
komut.Parameters.AddWithValue("@p2", sarkiyol);
komut.ExecuteNonQuery();
baglanti.Close();
}
}
}
//ardından listbox'u temizlememiz lazım. temizlemez isek şarkıları 2 defa görüntülemiş oluruz.(tam anlatamadım ama deneyip görmeniz daha iyi olur :) )
listBox1.Items.Clear();
listele(); //ardından listele metodumuzu çağırıp listbox'da şarkı isimlerini görüntülüyoruz
}

Şarkı ekleme işleminide bitirdik. Şimdi sırada listbox’da seçilen şarkıyı tablomuzdan silme var.

private void btnsarkisil_Click(object sender, EventArgs e) //şarkı sil butonu
{
baglanti.Open();

if (listBox1.Items.Count == 0) //ilk olarak listede hiç şarkı yok ise mesaj box ile bi uyarı veriyoruz
{
MessageBox.Show("Müzik bulunamadı.", "Uyarı", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else if (listBox1.SelectedItem == null) //eğer listbox'da item var ise ama hiçbir şarkı seçilmemiş ise başka bir uyarı veriyoruz
{
MessageBox.Show("Silmek için bir şarkı seçiniz", "Uyarı", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else if (MessageBox.Show("Seçilen müziği silmek istediğinizden emin misiniz?", "Uyarı", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
//eğer kullanıcı evet'e basarsa şunları yap
baglanti.Close();
baglanti.Open();
//müziğin ismine göre silme işlemini gerçekleştiricez. aynı isme sahip sadece 1 müzik olucağından sadece seçili müzik tablodan silinecek
SqlCommand komut = new SqlCommand("delete from tbl_muzikler where muzikad=@p1", baglanti); 
komut.Parameters.AddWithValue("@p1", Convert.ToString(listBox1.SelectedItem)); //parametremiz listbox'da seçilmiş olan item
komut.ExecuteNonQuery();
baglanti.Close();
listBox1.Items.Clear(); //ardından listbox'u temizleyip verileri tekrar listeliyoruz
listele();
}
baglanti.Close();
}

Şarkı ekleme ve silme işlemlerini de bitirdikten sonra şimdi listbox’da çift tıklanan müziği media player’da oynatmaya geçiyoruz.

Seçilen şarkıyı media player’da oynatmak için Listbox’ın doubleclick event’ini kullanacağız.

private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e) //listbox'a çift tıklandığında
{
baglanti.Open();
//muzik adı listbox'da seçilen değer olanın müzik yolunu select sorgusu ile getiriyoruz
SqlCommand komut = new SqlCommand("select muzikyol from tbl_muzikler where muzikad=@p1", baglanti);
komut.Parameters.AddWithValue("@p1", Convert.ToString(listBox1.SelectedItem)); //şartımız listbox'da seçilen item. buda seçilen müziğin ismi demek
SqlDataReader dr = komut.ExecuteReader();
while (dr.Read())
{
axWindowsMediaPlayer1.URL = dr[0].ToString(); //media player'a oynatacağı şarkının yolunu gösteriyoruz. 
                                             //select sorgusundan gelen değer seçtiğimiz şarkının müzik yolu
                                            //böylece media player'ın oynatacağı şarkıyı belirlemiş oluyoruz

axWindowsMediaPlayer1.Ctlcontrols.play(); //ardından media player'ı başlatıyoruz
}
baglanti.Close();
}

Seçilen şarkıyı media player’da oynatmayı da tamamladıktan sonra geriye oynat ve duraklat butonları kalıyor.

private void btnoynat_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.play(); //media playerı oynat
}

private void btnduraklat_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.pause(); //media playerı duraklat
}

Bu işlemlerle beraber proje tamamlanmış bulunmakta.

Geliştirmeye çok açık bir proje. Şarkı araması yapabilirsiniz, favori müzikler, sonraki/önceki müzik butonları, müzikleri rastgele çalma gibi gibi birçok şey var. Bu konularda da yardım isterseniz seve seve yardımcı olurum.

Şimdilik bu kadar.  Eğer yardıma ihtiyacınız olursa veya takıldığınız yerler olursa mesaj atmaktan çekinmeyin!

Okuduğunuz için teşekkür ederim!


Like it? Share with your friends!

C# ile SQL Tabanlı MP3 Player Yapımı

Giriş Yap

Hoşgeldin
Don't have an account?
Kayıt Ol

Şifreni Yenile

Back to
Giriş Yap

Kayıt Ol

Ekimize Katılmaya Hazırmısın

Back to
Giriş Yap
Choose A Format
Personality quiz
Series of questions that intends to reveal something about the personality
Trivia quiz
Series of questions with right and wrong answers that intends to check knowledge
Poll
Voting to make decisions or determine opinions
Story
Formatted Text with Embeds and Visuals