csharp ile combobox içindeki verileri secerek sql e atma
-
12 Haziran 2012 Salı 13:53
selam,
combobox içinde istanbul ,izmir ,ankara vs olsun.Burdan istediğim kayıdı secip daha sonra veritabanaına iller diye bir alana
palaka kodlarını atsın . Örneğin 34,35,06 şeklinde daha sonra bunları sırayla okumasını istiyorum,nasıl yaparım
Tüm Yanıtlar
-
14 Haziran 2012 Perşembe 09:41Yanıtlayıcı
Elinde bir "Plaka" tipi olacak. Kabaca (bu normalde bir veri tabanindan gelecek):
class Plaka { public string PlakaNo { get; set; } public string Sehir { get; set; } }Temsili olarak icine veri yukluyoruz (normalde veri tabanindan gelecek):
private List<Plaka> plakalar = new List<Plaka>(); private List<Plaka> secili = new List<Plaka>();
private void Form1_Load(object sender, EventArgs e)
{plakalar.AddRange(new List<Plaka> { new Plaka { PlakaNo = "35", Sehir = "Izmir" }, new Plaka { PlakaNo = "33", Sehir = "Icel" }, new Plaka { PlakaNo = "34", Sehir = "Istanbul" }, new Plaka { PlakaNo = "20", Sehir = "Denizli" }, new Plaka { PlakaNo = "09", Sehir = "Aydin" }, new Plaka { PlakaNo = "06", Sehir = "Ankara" }, new Plaka { PlakaNo = "01", Sehir = "Adana" }, new Plaka { PlakaNo = "02", Sehir = "Adiyaman" }, new Plaka { PlakaNo = "03", Sehir = "Afyon" }, new Plaka { PlakaNo = "04", Sehir = "Agri" }, new Plaka { PlakaNo = "05", Sehir = "Amasya" }, new Plaka { PlakaNo = "07", Sehir = "Antalya" } }); comboBox1.DataSource = plakalar; comboBox1.DisplayMember = "Sehir"; comboBox1.ValueMember = "PlakaNo"; comboBox1.SelectedIndex = -1; secili.Clear();
}Herhangi bir secimde secileni soyle alabilirsin (combo SelectedIndexChanged):
var plaka = (Plaka)comboBox1.SelectedItem;
if (!secili.Contains(plaka)) {
secili.Add(plaka);
}Istedigin zaman secili olanlari alirsin:
string secilenler = string.Join(",", secili.Select(p => p.PlakaNo));Bu sana 34,09,35 gibi bir string verir. Sonra bunlari veri tabanina atma islemi nasil bir veri tabani kullandigina bagli (Linq kullanmiyorsan). SQL serisi veri tabanlarinda (SQL server, oracle, SQLite, MySQL ...) bu sekilde veri saklamani pek tavsiye etmem. O tip veri tabanlari set bazli calisiyor. Sakladigini ne yapacaksin bilmiyorum ama bu sekilde sorgulari zahmetli olur. NoSQL serisi veri tabani ise o zaman yine bunu string olarak saklamanin anlami yok. Onun yerine array veya list kullan ve tek alanda sakla. Array veya list olursa indexlenebilir ve dogrudan sorgulanabilir. Ornegin (MongoDb):
public class Secim { public string Ad {get;set;} public List<string> Iller {get;set;} } MongoServer srv = MongoServer.Create("mongodb://localhost"); // Connection MongoDatabase db = srv.GetDatabase("VeriTabanim"); // yoksa yaratiliyor MongoCollection<Secim> col = db.GetCollection<Secim>("Secimler"); // “tablo”muz col.Insert( new Secim { Ad = "alicsharp", Iller = new List<string> { "35", "34", "09" } });
- Düzenleyen CetinBasozEditor 14 Haziran 2012 Perşembe 09:43
- Yanıt Olarak İşaretleyen Emre GunerturkModerator 18 Haziran 2012 Pazartesi 11:37
-
14 Haziran 2012 Perşembe 11:03
benim bu konuda pek fazla bilgim yok açıkçası ama elimden gelen bu umarım yardımcı olur ..
formum
kodlar
int b,c;
SqlConnection baglantı = new SqlConnection("Data Source=EMEKTAR\\IBRAHIM;Initial Catalog=ibrahim;Integrated Security=True");
private void Form1_Load(object sender, EventArgs e)
{
button2.Visible = false;
}
private void button1_Click(object sender, EventArgs e)
{
string a = Convert.ToString(comboBox1.Text);
if (a == "İstanbul")
{
b = 34;
}
else if (a == "Ankara")
{
b = 06;
}
else
{
b = 35;
}
c++;
SqlDataAdapter adaptor = new SqlDataAdapter();
try
{
DataSet ds = new DataSet();
if (baglantı.State == ConnectionState.Closed)
baglantı.Open();
SqlCommand komut = new SqlCommand("INSERT INTO iller (plaka) VALUES ('"+b+"')", baglantı);
komut.ExecuteNonQuery();
baglantı.Close();
MessageBox.Show("eklendi .... ");
button2.Visible = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
baglantı.Close();
}
}
private void button2_Click(object sender, EventArgs e)
{
SqlDataAdapter adaptor = new SqlDataAdapter("select * from iller",baglantı);
DataSet ds = new DataSet();
ds.Clear();
adaptor.Fill(ds,"iller");
dataGridView1.DataSource = ds.Tables["iller"];
adaptor.Dispose();
}- Yanıt Olarak İşaretleyen Emre GunerturkModerator 18 Haziran 2012 Pazartesi 11:37
-
14 Haziran 2012 Perşembe 11:38
daha önce bir arkadaşa verdiğim cevabı kopya ediyorum burdan örnek alabilirsin uygulama projesi de burda yer almakta
merhaba emre mesajı yeni gördüm, en light haliyle yazıyorum o zaman
sana oluşturduğum sql tablosunun yedeğini veriyorum bunu database restore yaparsan benim ekranımı görürsün yada kendi tablolarını benimki gibi yaparsanda olur, örnek olarak bir kaç ülke ve şehir girdim, istediğin gibi herhangi bir property yok, saf sql kodu sadece
NOT : aralarında fk,pk ilişkisi yoktur
database :
http://www.dosya.tc/server16/yihOoy/mydatabase.rar.html
bence kendin elle yapmaya çalış illa yok dersen uygulama projesi burada
kolay gelsin
http://www.dosya.tc/server16/2UKxuy/world.rar.html
country guid yada id lerini , city tablosundaki GUID_COUNTRY alanına yaz
bu ülkeler tablosu

bu şehir tablosu

uygulama görüntüleri


private void Form1_Load(object sender, EventArgs e) { GetCountry(); } private DataTable Connection(string commandType) { DataTable dataTable = new DataTable(); SqlConnection con = new SqlConnection("Data Source =localhost\\sqlexpress; Initial Catalog =mydatabase; Integrated Security =True; "); con.Open(); SqlCommand command = new SqlCommand(commandType); command.Connection = con; SqlDataAdapter dataAdapter = new SqlDataAdapter(command); dataAdapter.Fill(dataTable); con.Close(); return dataTable; } private void GetCountry() { DataTable dataTable = new DataTable(); dataTable = Connection("select * from Country"); cboCountry.DisplayMember = "COUNTRYNAME"; cboCountry.ValueMember = "GUID"; cboCountry.DataSource = dataTable; } private void GetCity(string CountryId) { DataTable dataTable = new DataTable(); dataTable = Connection("Select * from City where GUID_COUNTRY ='" + CountryId + "'"); cboCity.DisplayMember = "CITYNAME"; cboCity.ValueMember = "GUID"; cboCity.DataSource = dataTable; } private void cboCountry_SelectionChangeCommitted(object sender, EventArgs e) { GetCity(cboCountry.SelectedValue.ToString()); }- Yanıt Olarak İşaretleyen Emre GunerturkModerator 18 Haziran 2012 Pazartesi 11:37