Asp.Net C# İle VeriTabanına Resim Yazmak ve Okumak |
Yanıt Yaz |
Yazar | |
turknetyazilim
Üye Profili
Özel Mesaj Yolla
Bu kullanıcıya ait mesajları bul
Üyenin Web Sitesie Git
Arkadaş Listeme Ekle
Moderator Group Kayıt Tarihi: 18.Ocak.2008 Bulundugu Yer: Balıkesir Online: Sitede Değil Gönderilenler: 214 |
Alıntı Cevapla
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();
}
}
}
Ş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.
|
|
murat turan
Üye Profili
Özel Mesaj Yolla
Bu kullanıcıya ait mesajları bul
Üyenin Web Sitesie Git
Arkadaş Listeme Ekle
Admin Group Datakent Kayıt Tarihi: 01.Ekim.2003 Bulundugu Yer: Turkey Online: Sitede Değil Gönderilenler: 1798 |
Alıntı Cevapla Gönderim Zamanı: 09.Ekim.2009 Saat 21:58 |
ismail 2010'a geçmişsin :) sağol örnek için
|
|
turknetyazilim
Üye Profili
Özel Mesaj Yolla
Bu kullanıcıya ait mesajları bul
Üyenin Web Sitesie Git
Arkadaş Listeme Ekle
Moderator Group Kayıt Tarihi: 18.Ocak.2008 Bulundugu Yer: Balıkesir Online: Sitede Değil Gönderilenler: 214 |
Alıntı Cevapla Gönderim Zamanı: 11.Ekim.2009 Saat 16:59 |
Önemli değil abi.Senden çok şey öğrendim. |
|
devrekli
Newbie Kayıt Tarihi: 08.Mayis.2011 Online: Sitede Değil Gönderilenler: 3 |
Alıntı Cevapla 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 |
|
devrekli
Newbie Kayıt Tarihi: 08.Mayis.2011 Online: Sitede Değil Gönderilenler: 3 |
Alıntı Cevapla 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 |
|
murat turan
Üye Profili
Özel Mesaj Yolla
Bu kullanıcıya ait mesajları bul
Üyenin Web Sitesie Git
Arkadaş Listeme Ekle
Admin Group Datakent Kayıt Tarihi: 01.Ekim.2003 Bulundugu Yer: Turkey Online: Sitede Değil Gönderilenler: 1798 |
Alıntı Cevapla 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 |
|
devrekli
Newbie Kayıt Tarihi: 08.Mayis.2011 Online: Sitede Değil Gönderilenler: 3 |
Alıntı Cevapla Gönderim Zamanı: 11.Mayis.2011 Saat 20:08 |
teşekkür ederim, oldu.
|
|
kozkan645
Newbie Kayıt Tarihi: 06.Nisan.2012 Online: Sitede Değil Gönderilenler: 1 |
Alıntı Cevapla Gönderim Zamanı: 06.Nisan.2012 Saat 00:36 |
sayfadaki resimleri ve linki yenileyebilir misiniz lütfen çok lazım bu örnek bana da
|
|
Yanıt Yaz |
Forum Atla | Forum İzinleri Kapalı Foruma Yeni Konu Gönderme Kapalı Forumdaki Konulara Cevap Yazma Kapalı Forumda Cevapları Silme Kapalı Forumdaki Cevapları Düzenleme Kapalı Forumda Anket Açma Kapalı Forumda Anketlerde Oy Kullanma |