Merhaba arkadaşlar. Başlığını attığım bu konuda çok çektim, başkaları da çekmesin diye bulduğum çözümü paylaşmak istedim.

Bir müşterim için yazdığım bir program ve bu programın yönettiği bir eticaret sitesi var. Program ve web sitesi ayrı mysql veritabanlarını kullanıyor. (bunun nedeni dükkanında olan her ürünü web sitesine eklemiyor.)

Ürünlerin fiyatlarını programa ait veritabanında güncellediğinde, yeni fiyatların web sitesi veritabanında da güncellenmesi gerekiyordu. Onun için yaptığım araştırmalarda, yok program indirip bilmem ne yapman lazım, yok önce havuz veritabanı oluşturup oraya çekmen lazım, ordan alman lazım vb. gibi tavsiyeler okudum. HİÇ GEREK YOK böyle ıvır zıvırlara.

Aşağıdaki kodu C# formuna uygulayarak bunu otomatik olarak yapabilirsiniz... Yapamayan varsa elimden geldiğince yardımcı olmaya çalışırım. Saygılarımla...

Öncelikle bir adet string ve bir adet double nesne oluşturun.

string barkod; // program veritabanındaki barkodu buraya çekicez
double fiyat; // program veritabanındaki fiyatı buraya çekicez



MySqlConnection bag = new MySqlConnection("Server=xxxxxx;Database=xxxxxx;user=xxxxx;password=xxxxxx;charset=utf8;"); // 1. mysql connection stringimiz.
            MySqlConnection verilerbag = new MySqlConnection("Server=yyyyyy;Database=yyyyyy;user=yyyyy;password=yyyyyy;charset=utf8;"); // 2. mysql connection stringimiz.
            int ilk = 0; // program veritabanındaki ilk kayıt numarası için int değeri
            int son = 0; // program veritabanındaki son kayıt numarası için int değeri           
            try
            {
                if (verilerbag.State == ConnectionState.Closed)
                {
                    verilerbag.Open();
                }

                if (bag.State == ConnectionState.Closed)
                {
                    bag.Open();
                }

                if (verilerbag.State != ConnectionState.Open || bag.State != ConnectionState.Open)
                {
                    MessageBox.Show("Bağlantı sağlanamadı. Lütfen tekrar deneyiniz...", "Bağlantı Hatası", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    bag.Close();
                    bag.Dispose();
                    verilerbag.Close();
                    verilerbag.Dispose();
                    return;
                }

                MySqlDataReader sgoku;
                sgkmt.Connection = verilerbag;
                sgkmt.CommandText = "Select * from urunkayit ORDER BY Id ASC LIMIT 1"; // urunkayit tablomdaki ilk kayıtın numarasını buluyoruz
                sgoku = sgkmt.ExecuteReader();
                while (sgoku.Read())
                {
                    ilk = Convert.ToInt32(sgoku[0].ToString()); // tablomdaki ilk kayıtın numarasını buraya yazdık
                }
                sgoku.Close();
                sgoku.Dispose();
                sgkmt.Dispose();

                MySqlDataReader sgoku1;
                sgkmt.Connection = verilerbag;
                sgkmt.CommandText = "Select * from urunkayit ORDER BY Id DESC LIMIT 1"; // tablomdaki son kayıtın numarasını buluyoruz
                sgoku1 = sgkmt.ExecuteReader();
                while (sgoku1.Read())
                {
                    son = Convert.ToInt32(sgoku1[0].ToString()); // tablomdaki son kayıtın numarasını buraya yazdık

                }
                sgoku1.Close();
                sgoku1.Dispose();
                sgkmt.Dispose();              

                for (int i = ilk; i <= son; i++) // i =ilk - ilk kayıt buradan başlıyacak - i <= son - son kayıta eşit olana kadar döndür for u :))
                {
                    MySqlDataReader sgoku2;
                    sgkmt.Connection = verilerbag;
                    sgkmt.CommandText = "Select * from urunkayit where Id='" + i + "'"; //ilk kaydın barkodunu ve fiyatını aldık
                    sgoku2 = sgkmt.ExecuteReader();
                    while (sgoku2.Read())
                    {
                        barkod = (sgoku2[1].ToString()); // ilk kaydın barkodunu yazdık
                        fiyat = Convert.ToDouble(sgoku2[7].ToString()); // ilk kayıtın fiyatını yazdık (fiyatı doubleye convert ettik ki hata olmasın )
                    }
                    sgoku2.Close();
                    sgoku2.Dispose();
                    sgkmt.Dispose();

                    label12.Text = barkoda.ToString(); // estetik görünsün diye barkodu labele yazdık
                    label13.Text = fiyataa.ToString(); // estetik görünsün diye fiyatı labele yazdık
//  * sadece backgroundworker de çalışırken görünürler. yoksa bunları silin

                    gukmt.Connection = bag;
                    gukmt.CommandText = "Update siteveritabani Set price='" + Convert.ToDouble(fiyata) + "' Where model='" + barkod + "'"; // Buraya dikkat..! İlk barkodumuza göre fiyatı yazdırıyoruz.
                    gukmt.ExecuteNonQuery();
                    gukmt.Dispose();
barkod = null;
fiyat = null;
//barkodu ve fiyatı boşalttık.
                }

                if (verilerbag.State == ConnectionState.Open)
                {
                    verilerbag.Close();
                    verilerbag.Dispose();
                }
                
                if (bag.State == ConnectionState.Open)
                {
                    bag.Close();
                    bag.Dispose();
                }
                    

                MessageBox.Show("İnternet fiyatları başarı ile güncellendi...", "Fiyat Güncelleme Başarılı!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                label12.Text = "0";
                label13.Text = "0";
// Bağlantılarımızı kapattık, mesajı verdik, labelleri temizledik işlem tamamdır :))
                
            }
            catch (Exception ex)
            {
                bag.Close();
                bag.Dispose();
                verilerbag.Close();
                verilerbag.Dispose();
                MessageBox.Show(ex.Message);
            }
Arkadaşlar for döngüsünde ilk numaradan başlayıp barkodları o numaraya göre çekiyor. Her döngüde kayıttan sonra bir sonraki barkodu buluyor, ona göre fiyatı güncelliyor. Kısaca mantık bu.

Biraz karışık gibi görünebilir. Çok sadeleştiremedim kusura bakmayın. Uzman arkadaşlar kodu sadeleştirebilirler. Bir hatam varsa af ola. Umarım birinizin de olsa işine yararda, benim gibi günlerce uğraşmazsınız