Sql Veritabanına Resim Ekleme

Merhaba arkadaşlar. Bu makalemizde oluşturmuş olduğumuz Sql veritabanına resim eklemeyi göreceğiz. Formumuza 1 adet pictureBox, textBox, label, openFileDialog ve 2 adet Button ekleyin. Sql veritabanınızı Şekil 1 deki gibi, Katolog tablosunu da Şekil 2 deki gibi oluşturun.




Şekil 1




Şekil 2

Kısaca yapacağımız işlemleri anlatırsak; openFileDialog nesnesiyle resim dosyalarının açıp pictureBox ta göstereceğiz. Daha sonra FileStream metodu ile (dosyanın tam adresi,dosya modu,dosyanın açılış şekli) resim dosyasını okuma modunda açacağız. BinaryReader ve ReadBytes metodları ile sırasıyla veri akışı ve resim dosyasının byte değerini alıyoruz. Son olarakta Sql veritabanına bağlanarak, insert into metoduyla resim dosyalarımızı Sql veritabanımıza kaydediyoruz. (Şekil 5) Açıklamalar kod kısmında verilmiştir.



Şekil 3



Şekil 4



Şekil 5

Form1.cs


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.IO;

using System.Data.SqlClient;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

string resimPath;

private void Form1_Load(object sender, EventArgs e)

{

this.Text = "Sql Veritabanına Resim Ekleme";

pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

}

private void btnResimAc_Click(object sender, EventArgs e)

{

//Resim dosyalarımızı openFileDialog nesnesi ile açacağız.

openFileDialog1.Title = "Resim Aç";

openFileDialog1.Filter = "Jpeg Dosyası (*.jpg)|*.jpg|Gif Dosyası (*.gif)|*.gif|Png Dosyası (*.png)|*.png|Tif Dosyası (*.tif)|*.tif";

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);

label1.Text = openFileDialog1.FileName.ToString();

resimPath = openFileDialog1.FileName.ToString();

}

}

private void btnKaydet_Click(object sender, EventArgs e)

{

//Resimimizi FileStream metoduyla okuma modunda açıyoruz.

FileStream fs=new FileStream(resimPath,FileMode.Open,FileAccess.Read);

//BinaryReader ile byte dizisi ile FileStream arasında veri akışı sağlanıyor.

BinaryReader br = new BinaryReader(fs);

/*ReadBytes ile FileStreamde belirtilen resim dosyasındaki byte lar

byte dizisine aktarılıyor.

*/

byte[] resim = br.ReadBytes((int)fs.Length);

br.Close();

fs.Close();

//Sql Veritabanı ve Kayıt işlemleri

SqlConnection baglan = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\bilgi.mdf;Integrated Security=True;User Instance=True");

SqlCommand komut = new SqlCommand("insert into Katalog(Aciklama,Resim) Values (@yorum,@image) ",baglan);

/*yorum adlı parametre oluşturuyoruz. Char tipinde, 200 karakter uzunluğunda

ve değerinide TextBox tan alacak.

*/

komut.Parameters.Add("@yorum",SqlDbType.Char,200).Value=textBox1.Text;

komut.Parameters.Add("@image", SqlDbType.Image, resim.Length).Value = resim;

try

{

baglan.Open();

komut.ExecuteNonQuery();

MessageBox.Show(label1.Text + " veritabanına kaydedildi.");

}

catch (Exception ex)

{

MessageBox.Show(ex.Message.ToString());

}

finally

{

baglan.Close();

}

}

}

}


Bir makalenin daha sonuna geldik. Bir sonraki makalede görüşmek dileğiyle. Hoşçakalın. Bahadır ŞAHİN

About Bahadır Şahin

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.

7 comments:

prolcay dedi ki...

Kolay gelsin bahadır bey,

resmi ekledik güzel hata almadık ta
şimdi biz bu picture da bu resmi nası görüntüleyeceğiz ?

Altay Olcay dedi ki...

Select Komudu ile görüntülüceksiniz. Şimdi soru sırası bende. biliorm böyle resim kaydetmeyi fakat ben adres yolu kaydeterek dosyalara eklemeyi istiyorum. bir makalede anlatırsanız seviniriz..

Unknown dedi ki...

hocam Allah rızası için bir yardım lütfen dediklerinizi aynen uyguluyorum resimler istediğim gibi geliyor yalnız 10 dakika sonra sanki bişe olmuş gibi bozuluyor nedeni nedir sizce?

Unknown dedi ki...

Eklenen resmi ara butonu ile nasıl gösterebiliriz?

Unknown dedi ki...

Bahadır bey iyi günler. Bir otomasyon yapma aşamasındayım. Resmi ekliyorum ama her bir veri tabanındaki veriye eklemekte problem yaşıyorum. Yardım edebilmeniz mümkün mü acaba?

Unknown dedi ki...

Merhaba hocam ben koşullu ekliyorum yani insert intonun sonunda where var ve bütün herşeyi eksiksiz yazıyorum ama wherede hata alıyorum yardım ederseniz sevinirim mehmet.can.korkmaz.2000.342@gmail.com yardım ederseniz sevinirim tekrardan

Unknown dedi ki...

Her yerde olan aynı makale.. insan kendinden bir şeyler katar yada en azından sorulara cevap verir.. Eline sağlık kopyala yapıştır'ı iyi kullanmışsın..

Öne Çıkan Yayın

GridView da Seçili Satırı DetailsView da Göstermek

Merhaba arkadaşlar bu makalemizde GridView nesnesi ile birlikte DetailsView nesanesini birlikte kullanacağız. GridView da seçili satırın de...