Osman KURT

Kendime Not

MSSql Bugüne Ait Verileri Çekme

Mssql de tarih işlemleri benim için her zaman sıkıntılı olan işlemler olmuştur. Sql konusunda eminim ki birçok arkadaşımız da bu sıkıntıları yaşıyor. Bu yazım da sizlere ufak ama çok sıkça kullanılacak bir kod parçası vereceğim.

Farz edelimki başlama tarihi olan bir tablomuz olsun ve bizde başlama tarihi bugüne ait olan verileri çekelim. Bu arada alanımızın veri tipi datetime.

Sorgumuz,

Select * from Firmalar where CONVERT(NVARCHAR,BaslamaTarihi,104) = CONVERT(NVARCHAR,GETDATE(),104) 

Görüşmek üzere,

Osman KURT
Yazılım Uzmanı & MVC Eğitmeni

*Sorulan bir soru üzerine yapılmış bir paylaşımdır.

SQL de İki Tabloyu Birbiriyle Merge'leme

Bu yazımda size elinize bulunan 2 tabloyu birbiyle mergeleme (birleştirme) olayından bahsedeceğim. Yalnız aynı olan verileri almamak şartıyla. Örneğin elinizde bir mail listeniz var ve bu mail listenize yeni veriler eklemek istiyorsunuz. Ama var olan listenizde yeni eklenecek olan maillerden var mı bilmek istiyorsunuz ve aynı verileri gereksiz yere saklamak istemiyorsunuz. İşte tamda burada merge olayı devrey giriyor çünkü tek tek kontrol etmeye kalkarsanız ve dolu bir veri listeniz varsa gerçekten bu çile haline gelebilir.

Sql de merge olayı kasıyormu?

Kısa söylemek gerekirse HAYIR. Insert yada update zamanından fazla bir zaman almıyor.

Kullanımı;

İlk olarak ben liste halindeki verilerimi bir adet DataTable'e yazdım. Daha sonra önüne "#" koyarak oluşturduğum temp tabloma DataTablemi kayıt ettiim. Bu arada # işareti koyarak sql'de oluşturduğum temp tablom connection close olduğu anda kendiliğinden kayboluyor haberiniz olsun. Daha sonra merge olayımız devreye giriyor. İstediğimiz koşuluda yazabiliyoruz aynı zamanda.

Benim temp tablomun adı A, asıl kayıt atacağım tablom da MailListesi olsun ve kodumuz alt kısım da mevcut,

 

MERGE MailListesi cm 
USING A ON cm.FirmaID = A.FirmaID and cm.Mail = A.Mail
WHEN NOT MATCHED THEN
       INSERT (FirmaID,Mail)
       VALUES (A.FirmaID,A.Mail);

 

Kısa zaman sonra ufak bir örnek uygulamayıda buaradan paylaşacağım.

Görüşmek üzere

Osman KURT
Yazılım Uzmanı

ASP.Net de Excelden Veri Okuma ve Okunan Veriyi SQL'e Aktarma

Bu yazımda sizlere geçen bir projemde kullanmış olduğum bir kod yapısından bahsedeceğim. Excelden veriyi okumak ve okunan veriyi sql e kod kullanarak kaydetmek.

Öncelikle sayfamıza bir adet gridview ekliyoruz. Daha sonra c# tarafımıza geçerek excelden verilerimizi çekerek gridview içine dolduruyoruz.

 

protected void Page_Load(object sender, EventArgs e)
    {
        GridView1.DataSource = getirTumATSTablo();
        GridView1.DataBind();
    }

    DataTable getirTumATSTablo()
    {
        string dosya_adres = @"D:\osmankurt.xls";
        OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dosya_adres + ";Extended Properties=Excel 8.0");
        baglanti.Open();

        string query = "select * from [Sayfa1$A1:C800] ";
        OleDbDataAdapter oAdp = new OleDbDataAdapter(query, baglanti);
        DataTable dt = new DataTable();
        oAdp.Fill(dt);
        return dt;

    }

 

Şimdi sayfamıza bir adet buton atıyoruz ve butonumuza çift tıklıyoruz. Açılan kod satırımıza alt kısımda ki kodlarımızı yazıyoruz.

 

foreach (GridViewRow row in GridView1.Rows)
        {
            SqlCommand cmd = new SqlCommand("insert into Mail (A,B) values (@A,@B)", baglan.baglanti);
            cmd.Parameters.AddWithValue("@A", row.Cells[0].Text);
            cmd.Parameters.AddWithValue("@B", row.Cells[1].Text);
            if (ConnectionState.Closed == baglan.baglanti.State)
                baglan.baglanti.Open();
            cmd.ExecuteNonQuery();
            baglan.baglanti.Close();
        }

 

Bu kodumuzda yaptığımız işlem gridview içindeki satırları tek tek dolaşarak her satırda yazılı veriyi veritabanımıza kaydetmek. Algoritması son derece basit. Aslında bu işi direk yapan kod bloklarımız var fakat ben böyle bir yöntemle okumaya gittim.

Görüşmek Üzere,

Osman KURT

Yazılım Geliştirici ve Grafiker | Ineta K12 Spekaer