Forum

sqlden resim ç...
 
Bildirimler
Hepsini Temizle

sqlden resim çağırma

8 Yazılar
4 Üyeler
0 Reactions
1,529 Görüntüleme
(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

merhaba arkadaşlar,

visual basic 2010 ve sql server 2008 kullanmaktayım.

öncelikle şunu beliteyim. sql server 2008 içerisinde

 ıd=int,  resim=image

adında iki column tanımladım. ben burası için visual basic form1 de kayıt işlemi yaptım. kodları aşağıdaki gibidir.

  Private Sub btnac_Click(sender As System.Object, e As System.EventArgs) Handles btnac.Click

        dosya.InitialDirectory = "c:\"

        dosya.Title = "Dosya 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() = Windows.Forms.DialogResult.OK Then

            Dim ad As String

            ad = dosya.FileName

            pbox1.Image = Image.FromFile(ad)

            pbox1.SizeMode = PictureBoxSizeMode.StretchImage

            Label1.Text = dosya.SafeFileName

        End If

    End Sub

    Private Sub kaydet_Click(sender As System.Object, e As System.EventArgs) Handles kaydet.Click

        Dim dosyaAdi As String

        dosyaAdi = dosya.FileName

        If File.Exists(dosyaAdi) Then

            Dim icerik As Byte() = ImageToStream(dosyaAdi)

            adaptor = New SqlClient.SqlDataAdapter("INSERT INTO kaizentable (resim)VALUES ('" + dosya.FileName + "')", baglanti)

            adaptor.Fill(kayit, "kaizentable")

            MsgBox("Girilen resim veritabanına başarıyla kaydedildi.")

        Else

            MsgBox(dosyaAdi & " bulunamadı! ")

        End If

    End Sub

 

buraya kadar bir sorunum yok. asıl sorunum resimleri nasıl çağıracağım. aşağıdaki bir kod yazdım ama bir türlü picturebox ta gösteremedim.

nerede hata yapıyorum acaba kontrol edebilir misiniz.

 ikinci bir form açtım. form üzerinde bir tane picturebox ,textbox ve button var. aşağıdaki yordamı butona yazdım. fakat  PictureBox1.Image = datakayit("resim")  kısmında hata veriyor.

 

        adaptor = New SqlClient.SqlDataAdapter("select *from kaizentable where id='6' ", baglanti)

        adaptor.Fill(kayit, "kaizentable")

        datakayit = kayit.Tables(0).Rows(0)

        TextBox1.Text = datakayit("id")

        PictureBox1.Image = datakayit("resim") 

 
Gönderildi : 03/05/2012 17:48

(@servettarhan)
Gönderiler: 195
Reputable Member
 

arkadaşım yaptığın kodlamada söyle bir hata var resim yolunu tamamen değil sadece resmin adını kayıt yapacaksın veritabanına...

çağırmada ise bir toolbox dan image ekleyim ona da

örnek imgResim.Url="\\Resimler\kucuk"+drResim[ResimAdi].ToString();

şeklinde en basit şekli ile bu arkadaş kolay gelsin 

 
Gönderildi : 04/05/2012 11:55

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

visual basic.net kullanıyorum.

bahsettiğiniz kodlamayı tam anlayamadım. yani çözüm olarak bana kod yazabilir misiniz. ayrıca resimlerin sql de kaydedildiğini görüyorum. datagridwiev de ilgili column da dosya simgesi var. sadece sql deki fotoyu picturbox a aktaramıyorum. ayrıca visual basicte toolbax ta image denen bişi yokçi. orada sadece picturebox var. 🙂

 

 
Gönderildi : 04/05/2012 13:51

(@servettarhan)
Gönderiler: 195
Reputable Member
 

kusura bakma şöyle olacak mantık olarak 

PictureBox1.Image = resimyolu  datakayit("resim")  

 

resimin bulunduğu klasörü belirtmen lazım ben sana öyle diyeyim 

 
Gönderildi : 04/05/2012 13:59

(@FerideSOLMAZ)
Gönderiler: 72
Trusted Member
 

Merhaba,

Servet beyin bahsettiği kodlama resimlerin kendisini değilde isimlerini veritabanına string olarak yazmakla alakalı.

Ancak siz resmin kendisini veritabanına kaydetmişsiniz. Bu durumda yoluna ihtiyacınız yok, zaten bir klasorde yok anladığım kadarı ile.

Bir stream nesnesi ile resmi alıp o şekilde okuyabilirsiniz. Araştırırsanız birçok örneği mevcut webde.

 
Gönderildi : 04/05/2012 15:12

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

merhaba,

 

cevabınız için teşekkür ederim.  doğru bir teşhiste bulunmuşsunuz. acaba nasıl bir kod yazabilirim. yardımcı olmanız mümkün mü

 

 
Gönderildi : 04/05/2012 17:05

(@servettarhan)
Gönderiler: 195
Reputable Member
 

Merhaba,

Servet beyin bahsettiği kodlama resimlerin kendisini değilde isimlerini veritabanına string olarak yazmakla alakalı.

Ancak siz resmin kendisini veritabanına kaydetmişsiniz. Bu durumda yoluna ihtiyacınız yok, zaten bir klasorde yok anladığım kadarı ile.

Bir stream nesnesi ile resmi alıp o şekilde okuyabilirsiniz. Araştırırsanız birçok örneği mevcut webde.

feride hanıma katılıyorum anlatmak istediğim bu idi ama pek başarılı olmamışım sanırım kusura bakma arkadaşım  

 
Gönderildi : 04/05/2012 23:29

(@FarukDemirhan)
Gönderiler: 38
Trusted Member
 

Merhaba

Öncelikle ilgili resmi sql tablolarına kayıt ederken data type değerinin image olduğuna dikkat ediniz. Resmi yükledikten sonra .net kodlarınız aşağıdaki olursa sorunuz kalmayacak diye düşünüyorum;

                SqlConnection con = new SqlConnection(Connections.GetConnectionString());//Database bağlantı

                SqlCommand cmd = new SqlCommand("Select Substring([Resim],8,DataLength([Resim])) from Resimler", con);//Sorguda dikkat etmen gereken resim datasında ilk 8 karakteri kesmen gerekiyor

                SqlDataAdapter adp = new SqlDataAdapter(cmd);// DataAdapter oluştur

                DataTable dt = new DataTable();

                try

                {

                    if (con.State == ConnectionState.Closed)

                        con.Open();

                    adp.Fill(dt);

                    if (dt.Rows.Count > 0)//check whether data table contain any row or not

                    {

                        MemoryStream ms = new MemoryStream((byte[])dt.Rows[0]["Resim"]);

                        
PictureBox1 .Image = Image.FromStream(ms);

                        
PictureBox1 .SizeMode = PictureBoxSizeMode.StretchImage;

                        
PictureBox1 .Refresh();

                    }

                }

                catch (Exception ex)

                {

                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                } 

 

 Normal şartlarda memorystream kullanırken "Parameter is not valid" hatası alırsın. Burada püf nokta SQL sorgusunu yazarken resim alanında 8 karakteri substring yapman gerekiyor.

Umarım işine yarar. Herhangi bir sorun da iletişime geçebilirsin. 

 
Gönderildi : 18/05/2012 20:55

Paylaş: