Hızlı Konu Açma

Hızlı Konu Açmak için tıklayınız.

Son Mesajlar

Konulardaki Son Mesajlar

Reklam

Forumda Reklam Vermek İçin Bize Ulaşın

Linq To SQL

Mr.Onur

Fahri Üye
Fahri Üye
Fenerbahçe
Katılım
3 Şubat 2014
Mesajlar
1,744
Tepkime puanı
0
Puanları
0



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 = newSystem.IO.MemoryStream(son.SingleOrDefault().To Array());
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.
 

Users Who Are Viewing This Konu (Users: 0, Guests: 1)

Üst