VB-Forms İle SQL SERVER Resim Kaydetme Uygulaması

cakir

New member
Katılım
7 May 2006
Mesajlar
10,807
Reaction score
0
Puanları
0


Herkese Selam Arkadaşlar Bu Uygulamada Visual Basic Forms Uygulaması İle SQL SERVER'a Resim Kaydetme Ve Görüntüleme Yapacağız ...

İsterseniz İlk Önce Veritabanı Kısmından Başlayalım SQL SERVER'ı Açıyoruz Ve Var Olan Bir Veritabanında Yada Yeni Bir Veritabanı Oluşturuyoruz Tablomuzun İsmi ( Resim_Yol )
Tablomuzu Aşağıdaki Gibi Tasarlıyoruz


91c6eba6dd6a3f973275a87ae13fd06f.jpg



Evet Veritabanı İle İşimiz Bittiğine Göre Artık Projemize Geçebiliriz.
Hiç Vakit Kaybetmeden Visual Studio İle Yeni Bir Visual basic Windows Forms Uygulaması Açalım Uygulamamızın Adı Hiç Önemli Değil İstediğiniz Adı Verebilirsiniz ( :

Formumuzu Aşağıdaki Gibi Tasarlıyoruz


90494be680c1ab1d96da881bb1376d4a.jpg


2 Adet PictureBox
2 AdetButton
2 Adet Label
1 Adet GridView
1 Adet TextBox

Ekliyoruz

İlk Önce Projemiz Üzerinde Sağ Click Yeni Bir Klasör Oluşturuyoruz Ve Adını myImages Olarak Ayarlıyoruz Buraya Kayıt Ettiğimiz Resimler Saklanacak Yani Veritabanında Resimlerin Yolunu Tutmuş Olacağız Veri Bütünlüğünü Korumak Adına Ve Veritabanımızı Fazla Şişirmemek İçin Veritabanında Resimlerimizin Yolunu Tutmak Çok Mantıklı.
Hemen Akabinde Resim Getir Button'unun Click Olayına Gidiyoruz Ve Aşağıdaki Kodlarımızı Yazıyoruz

Onun Öncesinde Şu İki namespace'i Eklemeyi Unutmuyoruz !

Imports System.IO
Imports System.Data.SqlClient

Ve Hemen Akabinde Global Alanda Aşağıdakileri Tanımlıyoruz.

Private Shared ds As New DataSet
Private Shared ofd As New OpenFileDialog
Private Shared finfo As FileInfo


Artık Resim Getir Button Click Olayını Aşağıdaki Gibi Yazabiliriz


Private Sub btnPicture_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPicture.Click

ofd.Filter = "Sadece Resimler ( *.jpeg - *.jpg - *.Bmp * - *.Gif - *.Png ) | *.jpeg;*.jpg;*.Bmp;*.Gif;*.Png;"
Dim dosyaYolu As String = Nothing



If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then
dosyaYolu = ofd.FileName
finfo = New FileInfo(dosyaYolu)

'Dim benzersiz As Guid
'benzersiz = Guid.NewGuid()

'Dim dosya As String = benzersiz.ToString() & finfo.Name

'TextBox1.Text = dosya
TextBox1.Text = finfo.Name
PictureBox1.Image = Image.FromFile(dosyaYolu)

End If


End Sub



Hemen Ardından Resim Kaydet Button Click Olayına Gidiyoruz Ve Kodlarımızı Aşağıdaki Gibi Yazıyoruz.



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim dosyaYolu As String = finfo.Name
Dim sqlBaglanti As String = "Server=.; Database=Resim; Trusted_Connection=true"
Dim InsertSql As String = "INSERT INTO Resim_Yol(ResimYolu) VALUES(@ResimYol)"

Dim benzersiz As Guid = Guid.NewGuid()
Dim dosya As String = benzersiz.ToString() & finfo.Name


Using cn As New SqlConnection(sqlBaglanti)

Using com As New SqlCommand(InsertSql, cn)

cn.Open()
com.Parameters.AddWithValue("@ResimYol", dosya)
com.ExecuteNonQuery()

PictureBox1.Image.Save("..//..//MyImages/" & dosya)
MessageBox.Show("Kayıt Başarılı Oldu Bea : )", "Uyarı Penceresi", MessageBoxButtons.OK, MessageBoxIcon.Information)

End Using

End Using

End Sub



Hemen Ardından Formun Load Olayını'da Aşağıdaki Gibi Yazıyoruz



Private Sub Insert_Image_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Doldur_DataGridView()
End Sub



Private Sub Doldur_DataGridView()

Dim sqlBaglanti As String = "Server=.; Database=Resim; Trusted_Connection=true"
Dim sql As String = "SELECT ResimID,ResimYolu FROM Resim_Yol"

Using cn As New SqlConnection(sqlBaglanti)
Using da As New SqlDataAdapter(sql, cn)

cn.Open()

da.Fill(ds)

DataGridView1.DataSource = ds.Tables(0)
End Using
End Using

End Sub



Son Bir İşlem Kaldı GridView'den Seçili Bir Satıra Tıkladığımızda İligili Resim PictureBox İle Doldurulsun Hemen GridView'in Olaylarından, DataGridView1_CellClick Olayına Gidiyoruz Ve Aşağıdaki Gibi Yazıyoruz.


Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick

Try
Dim Sutun As Integer = e.RowIndex
Dim Satir As Integer = e.ColumnIndex

Dim seciliSatir As String = DataGridView1.Rows(Sutun).Cells(0).Value.ToString()

Dim sqlBaglanti As String = "Data Source=.; Initial Catalog=Resim; Integrated Security=true"
Dim sql As String = "SELECT ResimID,ResimYolu FROM Resim_Yol WHERE ResimID=@ResimID"



Using cn As New SqlConnection(sqlBaglanti)

Using com As New SqlCommand(sql, cn)

cn.Open()

com.Parameters.AddWithValue("@ResimID", seciliSatir)

Dim dr As SqlDataReader = com.ExecuteReader()
Dim dogruMu As Boolean = IIf(dr.HasRows, True, False)


If dogruMu Then

While dr.Read()
PcbResimGoster.Image = Image.FromFile("..//..//myImages/" & dr("ResimYolu"))
End While

End If

End Using

End Using


Catch ex As Exception
MessageBox.Show("Hata Oluştu ! " & vbCrLf & "Sadece ProductID İle Resim Görüntülenebilir")
End Try

End Sub


Buraya Kadar Herşeyi Doğru Yaptığımıza Göre Uygulamamızı Çalıştırıp Deneyebiliriz Artık
Çalıştırdığımızda Görüntü Aşağıdaki Gibi Olacaktır
Resim Getir Butonuna Tıkladığımızda Sadece Bizim Formatımıza Uygun Uzantılı Resimleri Seçebileceğiz.
Resmimizi Seçtikten Sonra Resim Kaydet Butonuna Tıkladığımızda İse Resmimizi Projemize Kaydedecek, Resim Yolunu İse Veritabanına Böylece Veritabanımızı Gereksiz Yere Şişirmemiş Olacağız ( :
Ve GridView'den Her Hangi Bir Satırı Tıkladığımızda İse Seçili Satıra Ait Resim Projemizden Gelecek Ve PictureBox'da Görüntülenecek : )

Projemizin Son Hali Aşağıdaki Gibi Olacak =)


799fb6a98d15ebb734572673b3ad584c.jpg



İnşaAllah Fırsat Buldukça Visual Basic, C#, SQL SERVER Ve ASP.NET İle Çok Güzel Projeler Paylaşmak İstiyorum ...
 
Geri
Üst