Makale Özeti

Linq To Sql işlemleri ve ADO.Net mimarisi ile stored procedure oluşturarak visual studio 2010 üzerinde geliştirmiş olduğumuz proje içerisinden veritabanına kayıt işlemleri ve örnek ile ilgili anlatımlar.

Makale

 

Bu yazımızda Linq To Sql ile ilgili bilgileri ve bunlarla ilgili örnek anlatımında bulunacağım yararlı olması dileği ile...

                Öncelikle Linq To Sql nedir? ne değildir kısaca bahsedecek olursak eğer Linq To Sql ilk olarak Visual Studio 2008 SP1 sürümüne eklenti olarak gelmiş ve diğer sürümlerinde de yer alan ve de çokça kullandığımız  bir eklentidir.Linq To Sql ile uygulamamız içerisindeki veritabanı işlemlerimizi çok daha hızlı,kolay ve daha düzenli bir şekilde gerçekleştirebilme olanağı sunmaktadır.Veritabanı işlemleri için ekleme,silme,düzenleme,arama yapma işlemleri gibi tüm işlemlerimizi Linq To Sql Classes ile gerçekleştirebilmekteyiz.

 

                Microsoft tarafından bize sunulan bu mimari ADO.NET (ActiveX Data Objects.Net) olarak geçmektedir.Linq To Sql sınıfımız bize veritabanımız ile arasında köprü görevini görmektedir.Bu şekilde uygulamalarımızın veritabanına bağlanarak yukarıda bahsetmiş olduğum tüm işlemleri hızlı bir şekilde yerine getirebiliriz.ADO.Net kullanımı çok geniş bir alana hakimdir.Bu yüzden de uygulama geliştirirken size kısıtlandırma değil olabildiğince kolaylık sağlar.Ne gibi? diyecek olursanız eğer ADO.NET ile sadece MSSQL veritabanına bağlanma ve işlemleri yapma zorunluluğunda değilsiniz.Bunun yanında diğer veritabanı yönetim sistemlerini de kullanabilirsiniz.ADO.Net ortamında Access,Oracle gibi diğer veritabanı yönetim sistemleri içinde kullanabilirsiniz..Bu yazımızda anlatacak olduğum örnek için MSSQL veritabanını kullanacağız ve masaüstü uygulaması olacak.ADO.NET ile web platformu üzerinde de çalışabilir web projelerinizde kullanabilirsiniz.

 

 

Uygulamamızda MSSQL kullanacağımız için projemizin namespace alanına "System.Data.SqlClient" kütüphanesi eklenmelidir.Bu namespace en çok kullanılan Sql sınıflarını barındıran kütüphanedir.

                Şimdi sırası ile işlem basamaklarımızı gerçekleştirelim.Öncelikle veritabanımızı hazırlayalım.MSSQ' e bağlandıktan sonra kullanacak olduğunuz veritabanınızı Database sekmesi üzerine sağ click yaparak New Database diyerek istediğiniz bir adda veritabanınızı adlandırarak oluşturabilirsiniz.Bu işlemin ardından tablo ve procedure işlemlerimiz olacak sırası ile bunları da anlatarak işlemlerimizi gerçekleştirelim.

 

Veritabanımızda image adlı tablomuzu oluşturuyoruz.

 

İmage adlı veritabanı tablomuz.

Tablomuzu ve yapacak olduğumuz işlemler ile ilgili alanlarımızı oluşturduktan sonra Linq To Sql işlemlerimiz için stored procedure yazmamız gerekmektedir.Bu işlemler içinse ;

Procedure bilgilerimizi yazıyoruz.MSSQL Veritabanımız ile ilgili yapacak olduğumuz işlemler şimdilik bu kadar.Bundan sonraki işlemlerimizi Visual Studio 2010 üzerinden gerçekleştireceğiz.Visual Studio ya geçmeden önce yazmış olduğumuz bu procedure nedir? dediğinizi duyar gibiyim.Bu yazmış olduğumuz stored procedure Linq To Sql Classes ile oluşturduğumuz DataContext içerisinde yer alan dmbl e atacak olduğumuz ve uygulamamız ile veritabanımızın haberleşmesini sağlayarak işlemlerimizi gerçekleştirmemize sağlayan objemizdir.

 

                Visual Studio 2010 üzerinden Windows Forms Application oluşturarak form ekranımızı aşağıdaki gibi düzenliyoruz.

Bu işlemin ardından veritabanımıza ait bilgilerimizi projemizin içerisine almamız gerekmektedir.Ctrl + Shift + A kısa yolu ile veya Add => New Item sekmesini tıklayarak ta bu işlemi gerçekleştirebilirsiniz.Açılan pencereden data sekmesi altında yer alan Linq To Sql Classes nesnemizi ve oluşturacak olduğumuz dbml'e ait adı girerek aşağıdaki resimde olduğu gibi düzenliyoruz.

Sol tarafta yer alan server explorer penceresi üzerinden veritabanına bağlanma işlemlerinizi gerçekleştirebilirsiniz.Bunun ardından oluşturduğumuz tablomuzu sol pencereye stored procedure de sağ tarafta yer alan pencereye sürükleyerek bırakıyoruz.Burada yapacak olduğumuz işlemler tamamlanmış durumda artık kodlama kısmı kaldı ve eğlenceli kısım bizi bekliyor...

Hatırlatma !

MSSQL Veritabanı içerisinde yazmış olduğunuz stored procedureler Programmability klasörü altında yer alan Stored Procedure klasörü içerisinde bulunmaktadır.

                Buradaki senaryomuz pictureBox üzerindeki resim dosyalarını veritabanımıza kaydetme ve resim dosyalarının id numaralarına göre arama yaptırarak veritabanından resim dosyalarını tekrardan pictureBox nesnesi üzerine getirme şeklinde olacak.Yapacak olduğumuz işlemler veritabanı kayıt ve arama işlemleri şeklinde olacak.Form içerisine bir tane openFileDialog atıyoruz resim dosyalarını seçmek için.Sırası ile yapacak olduğumuz işlemlerimiz :

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlClient;

 

namespace LınqToSql

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        private void btnOpen_Click(object sender, EventArgs e)

        {

            try

            {

                openFileDialog1.FileName = "";

 //openfiledialog nesnemizin btnOpen butonuna tıklanınca ilk olarak hangi dosya yolu üzerinde açılacak onu ayarlıyoruz.

                openFileDialog1.InitialDirectory = "C:\\Users\\my_pc\\Downloads";

                openFileDialog1.Title = "Lütfen Resim Seçiniz";// Kullanıcıya verecek olduğumuz mesajımız

                openFileDialog1.Filter = "Resim dosyaları(*.jpg|*.jpg"; //resim formatlarımızı belirledik.

                openFileDialog1.ShowDialog();

                string yol1 = openFileDialog1.FileName;

                pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

                pictureBox1.Image = Image.FromFile(yol1); //openfiledialog ile almış olduğumuz resim dosyasını picturebox a atadık.

            }

            catch (Exception hata)

            {

 

                MessageBox.Show(hata.Message);

            }

          

.

 

        }

        PictureDataContext dt = new PictureDataContext(); // eklemiş olduğumuz datacontext i oluşturuyoruz ve tüm işlemlerimizi bunun üzerinden gerçekleştiriyoruz.

        private void btnKaydet_Click(object sender, EventArgs e)

        {

            System.IO.MemoryStream ms = new System.IO.MemoryStream();

            this.pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);

            image rec = new image();

            rec.resim = ms.ToArray();

            dt.images.InsertOnSubmit(rec);//veritabanına kayıt işlemi

            dt.SubmitChanges();

        }

        private Image GetStok(string StokKodu)

        { //burada resim dosyamızı veritabanımızdan çekerken nasıl bir işlem yapmamız gerektiğini gösteren metodumuz var

 

            var son = from byt in dt.images

                      where byt.id == Convert.ToInt32(StokKodu)

                      select byt.resim;  //stokkodu olarak belirttiğimiz veritabanımızdaki id ve texbox ın textchange olayında arama yaptıracağız buna göre hangi id var ise onu getirecek

            Image img = null;

            if (son.SingleOrDefault() != null)

            {

                System.IO.MemoryStream ms = new System.IO.MemoryStream(son.SingleOrDefault().ToArray());

                img = Image.FromStream(ms);

 

            }

            else

            {

                img = null;

            }

            return img;

        }

 

        private void txtAra_TextChanged(object sender, EventArgs e)

        {

            pictureBox1.Image = GetStok(txtAra.Text);

            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

            //burada picturebox ın size mode özelliğine dikkat etmekte yarar var.

            // nedeni ise size mode stretch olmadığı durumda ekran görüntünüz siyah olabilir.

            //Bu işlemi picturBox nesnesinin properties özelliğinden de ayarlayabilirsiniz.

        }

    }

}

Visual Studio - ADO.Net - Linq To Sql İşlemleri ile kayıt arama ve resim kaydetme sorunlarını ve çözümlerini gerçekleştirmiş olduk.

 

       Bu yazımızda ADO.NET mimarisini Linq teknolojilerini ve kolaylıklarını Visual Studio ile ilgili resim kaydetme ve arama işlemlerini,Stored Procedure oluşturmayı,Dbml ile veritabanı işlemlerimizi incelemiş olduk.Umarım yararlı olmuştur.

 

Yukarıdaki örnek ile ilgili video anlatım için =>

Proje dosyasını indirmek için =>