none
csharp ile combobox içindeki verileri secerek sql e atma

    Soru

  • 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

    12 Haziran 2012 Salı 13:53

Yanıtlar

  • 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" }
      });


    14 Haziran 2012 Perşembe 09:41
    Yanıtlayıcı
  • 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();

            }

    14 Haziran 2012 Perşembe 11:03
  • 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());
            }     

    14 Haziran 2012 Perşembe 11:38

Tüm Yanıtlar

  • 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" }
      });


    14 Haziran 2012 Perşembe 09:41
    Yanıtlayıcı
  • 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();

            }

    14 Haziran 2012 Perşembe 11:03
  • 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());
            }     

    14 Haziran 2012 Perşembe 11:38