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

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

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 =)

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