Çözüldü C# Combobox-SQL nasıl birbirine bağlanır?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Kroxxy

Hectopat
Katılım
31 Ocak 2019
Mesajlar
74
Daha fazla  
Cinsiyet
Erkek
Merhaba. Bir stok takip uygulaması yapıyorum dönem projem olarak. YouTube'da bir kanaldan izleyip kodları aynen Visual Studio'ya geçiriyorum. Ancak SQL'de oluşturduğum kategori ve markaların ürün ekleme sayfasındaki comboboxlarda listelenmesini bir türlü halledemedim. İzlediğim videodaki hoca ile birebir aynı kodları yazdım ama olmuyor. Ürün ekleme sayfasındaki kodları paylaşıyorum, isteyen olursa kategori ve marka ekleme sayfalarının kodlarını da paylaşabilirim:

C#:
Using System;
Using System. Collections. Generic;
Using System.componentModel;
Using System. Data;
Using System. Data. SqlClient;
Using System. Drawing;
Using System. Linq;
Using System. Text;
Using System. Threading. Tasks;
Using System. Windows. Forms;

Namespace StokTakip
{
 Public partial class frmÜrünEkle: Form
 {
 Public frmÜrünEkle()
 {
 InitializeComponent();
 }
 SqlConnection baglanti = New SqlConnection("Data Source = DESKTOP-C5B2TEJ; Initial Catalog = Stok_Takip; Integrated Security = True");
 Private Void kategorigetir()
 {
 baglanti.Open();
 SqlCommand komut = New SqlCommand("select * from kategoribilgileri", baglanti);
 SqlDataReader read = komut.ExecuteReader();
 While (read.Read())
 {
 comboMarka.Items.Add(read["kategori"].ToString());
 }
 baglanti.Close();
 }
 Private Void label4_Click(object sender, EventArgs e)
 {

 }

 Private Void frmÜrünEkle_Load(object sender, EventArgs e)
 {
 kategorigetir();
 comboMarka.Items.Clear();
 ComboMarka. Text = "";
 baglanti.Open();
 SqlCommand komut = New SqlCommand("select kategori, marka from markabilgileri where kategori='" + comboKategori. SelectedItem + "'", baglanti);

 SqlDataReader read = komut.ExecuteReader();
 While (read.Read())
 {
 comboKategori.Items.Add(read["kategori"].ToString());
 comboMarka.Items.Add(read["marka"].ToString());

 }
 baglanti.Close();
 }

 Private Void comboMarka_SelectedIndexChanged(object sender, EventArgs e)
 {
 comboMarka.Items.Clear();
 ComboMarka. Text = "";

 baglanti.Open();
 SqlCommand komut = New SqlCommand("select * from markabilgileri", baglanti);
 SqlDataReader read = komut.ExecuteReader();
 While (read.Read())
 {
 comboMarka.Items.Add(read["marka"].ToString());
 }
 baglanti.Close();

 }

 Private Void comboKategori_SelectedIndexChanged_1(object sender, EventArgs e)
 {
 comboMarka.Items.Clear();
 ComboMarka. Text = "";

 baglanti.Open();
 SqlCommand komut = New SqlCommand("select * from markabilgileri", baglanti);
 SqlDataReader read = komut.ExecuteReader();
 While (read.Read())
 {
 comboMarka.Items.Add(read["marka"].ToString());
 }
 baglanti.Close();
 }

 Private Void comboMarka_SelectedIndexChanged_1(object sender, EventArgs e)
 {

 }
 }
}
 
Çözüm
Bilgisayara yeni geçtim. Muhtemelen hatanın sebebi aşağıdaki form load'ında bulunan SqlCommand'da bulunan sorgu.

C#:
 SqlCommand komut = New SqlCommand("select kategori, marka from markabilgileri where kategori='" + comboKategori. SelectedItem + "'", baglanti);
Burada yazan (where kategori='" + comboKategori. SelectedItem + "'") kod yüzünden. Form ilk load olduğunda ComboBox'unuzda herhangi bir veri olmadığından dolayı kod bunu where kategori='' olarak anlayacak. null değerinde herhangi bir şey içermediğinden dolayı where sorgusu boş dönüyor.

Satırı aşağıdaki gibi düzeltirseniz bir problem çıkacağını sanmıyorum. SQL Dosyanızı paylaşmadığınızdan dolayı sağlıklı bir test yapamıyorum.
C#:
SqlCommand komut = New SqlCommand("select kategori, marka from markabilgileri", baglanti);


Bunlara ek olarak bir string değerlere tırnak işareti içerisinde veri çekmek için + operatörü kullanmak çok kötü bir tercih olur. Demek istediğimi anlaman için hatalı olan kod satırına göre ufak bir örnek bırakıyorum.
C#:
 SqlCommand komut = New SqlCommand($"select kategori, marka from markabilgileri where kategori='{comboKategori.SelectedItem}' ", baglanti);

Çift tırnak işaretinin başına $ işareti koyarsanız tırnak içerisinde { } satırları arasında herhangi bir değişkeni yazdırabilirsiniz. Yine bununla ilgili bir örnek daha;
C#:
string kullanıcı = "Memati Baş";
messageBox.show($"Hoş geldiniz sayın {kullanıcı}");
Bu kod ile ekrana "Hoş geldiniz sayın Memati Baş" yazdıracak.
Bilgisayara yeni geçtim. Muhtemelen hatanın sebebi aşağıdaki form load'ında bulunan SqlCommand'da bulunan sorgu.

C#:
 SqlCommand komut = New SqlCommand("select kategori, marka from markabilgileri where kategori='" + comboKategori. SelectedItem + "'", baglanti);
Burada yazan (where kategori='" + comboKategori. SelectedItem + "'") kod yüzünden. Form ilk load olduğunda ComboBox'unuzda herhangi bir veri olmadığından dolayı kod bunu where kategori='' olarak anlayacak. null değerinde herhangi bir şey içermediğinden dolayı where sorgusu boş dönüyor.

Satırı aşağıdaki gibi düzeltirseniz bir problem çıkacağını sanmıyorum. SQL Dosyanızı paylaşmadığınızdan dolayı sağlıklı bir test yapamıyorum.
C#:
SqlCommand komut = New SqlCommand("select kategori, marka from markabilgileri", baglanti);


Bunlara ek olarak bir string değerlere tırnak işareti içerisinde veri çekmek için + operatörü kullanmak çok kötü bir tercih olur. Demek istediğimi anlaman için hatalı olan kod satırına göre ufak bir örnek bırakıyorum.
C#:
 SqlCommand komut = New SqlCommand($"select kategori, marka from markabilgileri where kategori='{comboKategori.SelectedItem}' ", baglanti);

Çift tırnak işaretinin başına $ işareti koyarsanız tırnak içerisinde { } satırları arasında herhangi bir değişkeni yazdırabilirsiniz. Yine bununla ilgili bir örnek daha;
C#:
string kullanıcı = "Memati Baş";
messageBox.show($"Hoş geldiniz sayın {kullanıcı}");
Bu kod ile ekrana "Hoş geldiniz sayın Memati Baş" yazdıracak.
 
Son düzenleyen: Moderatör:
Çözüm
Bilgisayara yeni geçtim. Muhtemelen hatanın sebebi aşağıdaki form load'ında bulunan SqlCommand'da bulunan sorgu.

C#:
 SqlCommand komut = New SqlCommand("select kategori, marka from markabilgileri where kategori='" + comboKategori. SelectedItem + "'", baglanti);
Burada yazan (where kategori='" + comboKategori. SelectedItem + "'") kod yüzünden. Form ilk load olduğunda ComboBox'unuzda herhangi bir veri olmadığından dolayı kod bunu where kategori=" olarak anlayacak. Null değerinde herhangi bir şey içermediğinden dolayı where sorgusu boş dönüyor.

Satırı aşağıdaki gibi düzeltirseniz bir problem çıkacağını sanmıyorum. SQL Dosyanızı paylaşmadığınızdan dolayı sağlıklı bir test yapamıyorum.
C#:
SqlCommand komut = New SqlCommand("select kategori, marka from markabilgileri", baglanti);

Bunlara ek olarak bir string değerlere tırnak işareti içerisinde veri çekmek için + operatörü kullanmak çok kötü bir tercih olur. Demek istediğimi anlaman için hatalı olan kod satırına göre ufak bir örnek bırakıyorum.
C#:
 SqlCommand komut = New SqlCommand($"select kategori, marka from markabilgileri where kategori='{comboKategori.SelectedItem}' ", baglanti);

Çift tırnak işaretinin başına $ işareti koyarsanız tırnak içerisinde { } satırları arasında herhangi bir değişkeni yazdırabilirsiniz. Yine bununla ilgili bir örnek daha;
C#:
string kullanıcı = "Memati Baş";
messageBox.show($"Hoş geldiniz sayın {kullanıcı}");
Bu kod ile ekrana "Hoş geldiniz sayın Memati Baş" yazdıracak.

Hocam çok teşekkür ederim günlerdir uğraşıyordum. Elinize sağlık ilk önerinizi uyguladığımda sorun çözüldü.
 
Hocam bu kez de şöyle bir problemim var. Kategori comboboxunda problem yok ama bu kes de marka comboboxundakiler listeleniyor ama seçim yaptığımda kutucuğa yazmıyor. @AhmetKnKc
 

Dosya Ekleri

  • combobox.png
    combobox.png
    169,8 KB · Görüntüleme: 21
Hocam bu kez de şöyle bir problemim var. Kategori comboboxunda problem yok ama bu kes de marka comboboxundakiler listeleniyor ama seçim yaptığımda kutucuğa yazmıyor. @AhmetKnKc

Hangi kutucuğa yazmasını istiyorsunuz? Kodlarınızda datagridview veya textbox ile ilgili bir şey yok. Ayrıca bu sorun için yeni konu açmanız gerekiyor.

C# bilginiz yok ise ben size sıfırdan bu proje için yardımcı olamam. Genelde takıldığınız, yapamadığınız veya hata aldığınız yerlerde yardımcı olmayı tercih ediyorum.
 
Hangi kutucuğa yazmasını istiyorsunuz? Kodlarınızda datagridview veya textbox ile ilgili bir şey yok. Ayrıca bu sorun için yeni konu açmanız gerekiyor.

C# bilginiz yok ise ben size sıfırdan bu proje için yardımcı olamam. Genelde takıldığınız, yapamadığınız veya hata aldığınız yerlerde yardımcı olmayı tercih ediyorum.
Kardeşim, bilgim olmasa bunları da yapamazdım. Bu işe de girmezdim, kimse senden sıfırdan yardımcı olmanı da istemiyor. Otomasyonum tek formdan oluşmuyor ve marka listeleme için de data grid kullanmıyorum. Bu yüzden yok. Önceki yardımın için teşekkür ederim.
 
Kardeşim, bilgim olmasa bunları da yapamazdım. Bu işe de girmezdim, kimse senden sıfırdan yardımcı olmanı da istemiyor. Otomasyonum tek formdan oluşmuyor ve marka listeleme için de data Grid kullanmıyorum. Bu yüzden yok. Önceki yardımın için teşekkür ederim.

Biraz yanlış anladın seni küçümsemiyorum, paylaştığınız kodunuzda bununla ilgili bir satır yok. Evet yardımcı olmak isterim genelde forumda telefonda aktif olduğumdan dolayı deneme yaparak doğru bir çözüm sunamıyorum. İstediğiniz şey ise hatırladığım kadarıyla "textboxxx. Text = combobox. Selectedıtem;" benzeri bir kod ile yapılabilir. Fakat comboboxda seçili bir şey yok ise hata verecektir. Try catch içinde kullanabilir veya seçili olup olmadığını if ile kontrol edebilirsiniz.
 

Yeni konular

Geri
Yukarı