Datakent Ana Sayfa
Anasayfa Anasayfa > Diğer bölümler > C# & ASP.NET
  Aktif Konular Aktif Konular RSS: Asp.Net C# İle VeriTabanına Resim Yazmak ve Okumak
  Yardım Yardım  Hızlı Ara   Kayıt Ol Kayıt Ol  Giriş Giriş

Asp.Net C# İle VeriTabanına Resim Yazmak ve Okumak

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
turknetyazilim Açılır Menü Göster
Moderator Group
Moderator Group
Simge

Kayıt Tarihi: 18.Ocak.2008
Bulundugu Yer: Balıkesir
Online: Sitede Değil
Gönderilenler: 214
  Alıntı turknetyazilim Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: Asp.Net C# İle VeriTabanına Resim Yazmak ve Okumak
    Gönderim Zamanı: 05.Ekim.2009 Saat 18:13

Merhaba Arkadaşlar ;

 
Bu makalemde sizlere Asp.Net uygulamaları ile VeriTabanına resim dosyalarını Binary olarak nasıl yazıp okuyabileceğimizden bahsedicem.Daha Önce Bu işlemleri Windows Form uygulamaları ile nasıl yapılabileceğini anlatmıştım.(Delphi,C#) Şimdi ise bu işi Web Formda yapıcaz.Yine kullanacağımız veriTabanı msSQL server olucak.Bu uygulamayı diğer veriTabanlarındada kullanıp Tecrübe edinebilirsiniz.
 
 
Ben veriTabanına dosyayı değilde, yolunu yazıyorum, ordan çağırıyorum diyebilirsiniz.Ne gerek var ! yok dosya yazmaymış bilmem neymiş diye.Bende derim ki ozaman ;Tuttu bi gün veriTabanına yazmak veya okumak zorunda kaldınız(Tabi binary olarak) veya nebileyim mevcut bir veriTabanı var ve veriTabanındaki tabloda adam resmin yolunu değilde resmin kendisininin tutulacağı şekilde tabloyu tasarlamıştır.Ve yine düşünün ki siz o veriTabanı ile çalışmak zorunda kalmışsınızdır.Şimdi ne olacak ? J
 
Evet kendi geliştirdiğiniz uygulamalarınızda dosyanın yolunu yazıp ordan çağırıp uygulamalar geliştirebilirsiniz.Ama Mevcut bir sistemle çalışma zorunluğu olduğunda bu tip bilgilere ihtiyacınız olacaktır.Tabi benim bir başkasının veriTabanı ile çalışmak zorunda olduğum filan yok.Acaba VeriTabanına nasıl resim dosyası yazarım ve okurum diye aklıma takılan bir soruydu.Aklımdaki sorunun çözümünü geliştirdim.Ve sizlerle de paylaşmak istedim.
 
 
Olurya bi gün gerçekten yukarıdaki bahsettiğim durumlarla gerçekten karşılaşırsanız.Ve Kara kara düşünürsünüz nasıl yaparım diye.İşte Ozaman anlarsınız bu işin önemini.
Neyse Bu kadar hikaye yeter diyerek Uygulamaya Başlayalım. J
 
 
Öncelikle Test VeriTabanı içersine aşağıdaki gibi resimler isminde bir tablo oluşturun.

Sanırım Tablo alanlarında ne tutulacağı hakkında bir şey söylemeye gerek yok.
Evet Tablo Tasarımımız bu kadar Şimdi File ->New Project deyip C# -> Web ->Asp.Net Web Application adımlarını izleyerek bir uygulama başlatın.
 
 
 
Varsayılan olarak Default.aspx isminde Sayfamız Gelecektir.Biz bu Sayfada resmimizi göstericez.
Resmimizi Image Nesnesi üzerinde göstereceğimiz için ToolBoxtan bir tane Image nesnesi ekliyoruz Default.aspx Sayfamıza.Image Nesnesinin isminde herhangi bir değişiklik yapmadım.Aşağıdaki gibi.

Default.aspx Sayfasına Ad kod bloğu aşağıdaki gibidir.
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
namespace ismailkocacancomBinaryProject
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Image1.BorderWidth = 2; //Çizgi Kalınlığı
            Image1.BorderStyle = BorderStyle.Solid; //Çizgili olsun
            Image1.ImageUrl = "Oku.aspx"; // gösterilcek resim adresi
        }
    }
}
 
Burda Image1.ImageUrl = "Oku.aspx"; koduna dikkat ederseniz. İsmail.jpg veya ismail.gif gibi bir resim dosyası değilde Oku.aspx yazdık.Biraz sonra göreceksiniz. Oku.aspx sayfasının çıkış formatı image olarak olucak.
 
Daha sonra iki Tane daha sayfa Ekliycez.Bunlar Ekle.aspx ve oku.aspx isminde olucak.Sayfaları eklemek için Project -> Add New Item Menüsünü kullanabilirsiniz.
Şimdi ise Ekle.aspx Sayfamızı Aşağıdaki gibi Tasarlayalım.

Bu Sayfadan Veri girişi yapıcaz. Adı Soyad girip FileUpload Nesnesi ile seçtiğimiz resim dosyasını Tabloya Ekliycez.
Ekle.aspx Sayfasına ait Tüm Kod bloğu ise aşağıdaki gibidir.
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
using System.Data; // ekleyin
using System.Data.SqlClient; // ekleyin
using System.Data.SqlTypes;// ekleyin
using System.Drawing;// ekleyin
using System.IO;// ekleyin
 
namespace ismailkocacancomBinaryProject
{
    public partial class Ekle : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
 
        }
 
        // Kaydet Butonu
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (FileUpload1.HasFile)
            {
                Byte[] bytDizi = FileUpload1.FileBytes; // diziye aktar
                MemoryStream ms = new MemoryStream(bytDizi);
                ms.Read(bytDizi, 0, bytDizi.Length);
                ms.Close();
 
                SqlParameter parametreDosya = new SqlParameter("@resmi", SqlDbType.VarBinary, bytDizi.Length, ParameterDirection.Input, false,
                0, 0, null, DataRowVersion.Current, bytDizi);
 
 
                SqlConnection baglantiNesnesi = new SqlConnection("server=ISMAILCOMP\\SQLEXPRESS; database=Test; integrated security=true");
                baglantiNesnesi.Open();
                SqlCommand komutNesnesi = new SqlCommand("insert into resimler (adsoyad,resmi) values (@adsoyad,@resmi)", baglantiNesnesi);
                komutNesnesi.Parameters.Add(parametreDosya);
                komutNesnesi.Parameters.AddWithValue("@adsoyad", TextBox1.Text); // parametre ve değeri ekleniyor
                komutNesnesi.ExecuteNonQuery(); // sorguyu çalıştır
                baglantiNesnesi.Close();
                komutNesnesi.Dispose();
 
                Label1.Text = "İşlem Tamamlandı";
            }
        }
    }
}
Oku.aspx Sayfasına ait kod bloğu ise aşağıdaki gibidir.
Bu Sayfanın Context’ine Tablodaki resim dosyası okunacak.
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
using System.Data; //veri kütüphanesi
using System.Data.SqlClient; //SQListemci kütüphanesi
using System.Data.SqlTypes; //sql server tiplerini barındıran kütüphane
using System.Drawing; //Çizim kütüphanesi
using System.IO; // giriş-çıkış kütüphansi
namespace ismailkocacancomBinaryProject
{
    public partial class Oku : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            SqlConnection baglantiNesnesi = new SqlConnection("server=ISMAILCOMP\\SQLEXPRESS; database=Test; integrated security=true");
            baglantiNesnesi.Open();
 
            //kimlik numarası 1 olan kaydın bilgileri çekiliyor.
            SqlDataAdapter islem = new SqlDataAdapter("SELECT * FROM resimler where kimlik=1", baglantiNesnesi);
            DataSet veriKumesi = new DataSet();
            islem.Fill(veriKumesi, "resimler");
 
 
            Byte[] bytdizi = new Byte[0]; // dizi tanımlanıp boyutlandırılıyor.
            bytdizi = (Byte[])(veriKumesi.Tables["resimler"].Rows[0]["resmi"]); // Byte olarak aktar
            MemoryStream bellekAkisNesnesi = new MemoryStream(bytdizi);
 
 
            Response.OutputStream.Write(bytdizi, 0, bytdizi.Length); // ekran yazdırılıyor
 
            baglantiNesnesi.Dispose(); // nesneyi yok et
            islem.Dispose();
            veriKumesi.Dispose();
        }
    }
}
 
Artık uygulamamızı çalıştırıp sonucu görebiliriz.Ben Ekle.aspx Sayfası üzerindeyken sağ tıklayıp View in Browser komutu ile Sayfayı çalıştırıp iki tane kayıt ekledim.

Şimdi Default.aspx Sayfamızda resimler nasıl görünüyor ona bakalım.Oku.aspx Sayfasındaki Sql sorgusunda kimlik şartına 1 değerini aktararak 1 numaralı kaydın resimini okudum.Aşağıda görüldüğü gibi.

Yine Oku.aspx Sayfasındaki sql  sorgusundaki kimlik şartına 2 değerini aktararak. Kimlik değeri 2 olan kaydın resim bilgisini çekmiş oldum

Şimdilik benim bu konuda anlatmak istediklerim bu kadar.
Bu olay da bu kadar.
Kaynak Kodları burdan indirebilirsiniz.
Yukarı Dön
murat turan Açılır Menü Göster
Admin Group
Admin Group
Simge
Datakent

Kayıt Tarihi: 01.Ekim.2003
Bulundugu Yer: Turkey
Online: Sitede Değil
Gönderilenler: 1798
  Alıntı murat turan Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 09.Ekim.2009 Saat 21:58
ismail 2010'a geçmişsin :) sağol örnek için
Yukarı Dön
turknetyazilim Açılır Menü Göster
Moderator Group
Moderator Group
Simge

Kayıt Tarihi: 18.Ocak.2008
Bulundugu Yer: Balıkesir
Online: Sitede Değil
Gönderilenler: 214
  Alıntı turknetyazilim Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 11.Ekim.2009 Saat 16:59

Önemli değil abi.Senden çok şey öğrendim.

Yukarı Dön
devrekli Açılır Menü Göster
Newbie
Newbie


Kayıt Tarihi: 08.Mayis.2011
Online: Sitede Değil
Gönderilenler: 3
  Alıntı devrekli Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 08.Mayis.2011 Saat 01:49
link silinmiş hocam, yenileyebilirmisin? ben yaptım ama hata verdi :(

http://img183.imagevenue.com/img.php?image=07919_33333_122_150lo.jpg

bağlantıda hata varmış gibi görünüyor ama tüm ayarları tamam :(

http://img295.imagevenue.com/img.php?image=09201_AAAAAAAAAAAAA_122_366lo.jpg

veritabanında; kimlik (numeric, birincil key) adsoyad(varchar) resmi (image) şeklinde oluşturdum. veritabanı ismi de resim zaten resimde de herşeyin normal olduğu görüyor ama bağlantı hatası veriyor sürekli. ilkez mssql kullanıyorum. acaba öncesinden bir ayar mı yapmak gerek? teşekkürler


----------

.\\SQLEXPRESS yaptığımda da şu hatayı veriyor.


http://img181.imagevenue.com/img.php?image=64512_Noname_122_499lo.jpg


Düzenleyen devrekli - 08.Mayis.2011 Saat 17:44
Yukarı Dön
devrekli Açılır Menü Göster
Newbie
Newbie


Kayıt Tarihi: 08.Mayis.2011
Online: Sitede Değil
Gönderilenler: 3
  Alıntı devrekli Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 10.Mayis.2011 Saat 20:58
son durum olarak şu hatayı nasıl düzeltirim?

http://tinypaste.com/1019d

http://img284.imagevenue.com/img.php?image=45752_Noname_122_427lo.jpg
Yukarı Dön
murat turan Açılır Menü Göster
Admin Group
Admin Group
Simge
Datakent

Kayıt Tarihi: 01.Ekim.2003
Bulundugu Yer: Turkey
Online: Sitede Değil
Gönderilenler: 1798
  Alıntı murat turan Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 11.Mayis.2011 Saat 10:12
dostum benim SQLConnection 'ı açmamışsın. ExecuteNonQuery  den önce con.Open(); yap
 
"ExecuteNonQuery request an open and avaible Connection"


Düzenleyen murat turan - 11.Mayis.2011 Saat 10:12
Yukarı Dön
devrekli Açılır Menü Göster
Newbie
Newbie


Kayıt Tarihi: 08.Mayis.2011
Online: Sitede Değil
Gönderilenler: 3
  Alıntı devrekli Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 11.Mayis.2011 Saat 20:08
teşekkür ederim, oldu.
Yukarı Dön
kozkan645 Açılır Menü Göster
Newbie
Newbie


Kayıt Tarihi: 06.Nisan.2012
Online: Sitede Değil
Gönderilenler: 1
  Alıntı kozkan645 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 06.Nisan.2012 Saat 00:36
sayfadaki resimleri ve linki yenileyebilir misiniz lütfen çok lazım bu örnek bana da Exclamation
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Menü Göster



Bu Sayfa 0,363 Saniyede Yüklendi. [power by : WebWiz]