 
 
Sql Veritanına Image Kaydetmek
Merhaba arkadaşlar, bu makalemizde sql veritabanımıza resim kaydedeceğiz. Formunuza 1 adet PictureBox, 2 adet Button ekleyin. Açıklamalar kod kısmında verilmiştir.



Imports System.Data.SqlClient
Imports System.IO
Public Class Form1
    Dim dosya As OpenFileDialog = New OpenFileDialog()
    Private Sub btnAc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAc.Click
        dosya.InitialDirectory = "C:\"
        dosya.Title = "Resim Seç"
        dosya.FilterIndex = 1
        dosya.Filter = ("Jpeg Resim Dosyası (*.jpg)|*.jpg|Gif Resim Dosyası (*.gif)|*.gif|Bmp Resim Dosyası(*.bmp)|*.bmp|Tüm Dosyalar(*.*)|*.*")
        If dosya.ShowDialog() = DialogResult.OK Then
            Dim ad As String = ""
            ad = dosya.FileName
            'Resimi pictureboxta gösterimini sağlıyoruz
            pbox1.Image = Image.FromFile(ad)
            pbox1.SizeMode = PictureBoxSizeMode.StretchImage
            Label1.Text = dosya.SafeFileName
        End If
    End Sub
    Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
        Dim str As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\image.mdf;Integrated Security=True;User Instance=True"
        Dim baglan As SqlConnection
        baglan = New SqlConnection(str)
        Dim dosyaAdi As String
        'resimin bulunduğu yeri tanımlıyoruz.
        dosyaAdi = dosya.FileName
        If File.Exists(dosyaAdi) Then
            Dim id As Integer = 1
            'resimi byte cinsinden okutup içeriğini alıyoruz.
            Dim icerik As Byte() = ImageToStream(dosyaAdi)
            baglan.Open()
            'resimimizin veritabanına girişini yapıyoruz.
            Dim komut As New SqlCommand("insert into images (id,resim) values ( @id,@resim)", baglan)
            komut.Parameters.AddWithValue("@id", id)
            komut.Parameters.AddWithValue("@resim", icerik)
            komut.ExecuteNonQuery()
            baglan.Close()
            MsgBox("Girilen resim veritabanına başarıyla kaydedildi.")
        Else
            MsgBox(dosyaAdi & " bulunamadı! ")
        End If
    End Sub
    Private Function ImageToStream(ByVal fileName As String) As Byte()
        'memorystream ile tampon bellek oluşturuyoruz.
        Dim ms As New MemoryStream()
git:
        Try
            Dim image As New Bitmap(fileName)
            'resim dosyasını kaydediyoruz.
            image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
        Catch ex As Exception
            GoTo git
        End Try
        Return ms.ToArray()
    End Function
End Class
Bir makalenin daha sonuna geldik. Bir sonraki makalede görüşmek dileğiyle. Hoşçakalın. Bahadır ŞAHİN