Veritabanına gömülü olarak kayıtlı resimleri GridView'e bağlama örneği



SQLEXPRESS Veritabanı ve Tablosu

 

1.Aşama veritabanı oluşturun

 

CREATE DATABASE [ResimlerDB]

 

 

2.Aşama oluşturmuş oldugunuz veritabanına verileri kaydedeceğiniz
  yeni bir tablo oluşturun

 

USE [ResimlerDB]

CREATE TABLE [dbo].[Resimler](

      [ID] [int] IDENTITY(1,1) NOT NULL,

      [ResimAdi] [nvarchar](150) COLLATE Turkish_CI_AS NOT NULL,

      [Resim] [image] NOT NULL

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

 

 

Default.aspx – Sayfası

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ResimGoster.aspx.cs" Inherits="ResimGoster" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title>GridView'e resim baglama örnegi</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">

            <Columns>

                <asp:TemplateField HeaderText="ID">

                    <ItemTemplate>

                        <asp:Label ID="lblID" runat="server" Text='<%# Eval("ID") %>' />

                    </ItemTemplate>

                </asp:TemplateField>

                <asp:TemplateField HeaderText="Resim Adı">

                    <ItemTemplate>

                        <asp:Label ID="lblResimAdi"

                            runat="server" Text='<%# Eval("ResimAdi") %>' />     

                    </ItemTemplate>

                </asp:TemplateField>

               <asp:ImageField DataImageUrlField="ID"

                               DataImageUrlFormatString="ViewResim.aspx?ID={0}"

                               HeaderText="Resim"

                               ControlStyle-Height="150px"

                               ControlStyle-Width="250px"  />

            </Columns>

        </asp:GridView>

    </div>

    </form>

</body>

</html>

 

Default.aspx.cs – Sayfası

 

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

public partial class ResimGoster : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            VeriYukle();

        }

    }

    protected void VeriYukle()

    {

        ClassResim r = new ClassResim();

        GridView1.DataSource = r.GetAllResimler();

        GridView1.DataBind();

    }

}

 

ClassResim.cs – Sayfası

 

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

using System.Collections.Generic;

 

 

public class ClassResim

{

    private int _ID;

    private string _ResimAdi;

    private byte[] _Resim;

 

    public int ID

    {

        get { return this._ID; }

        set { this._ID = value; }

    }

 

    public string ResimAdi

    {

        get { return this._ResimAdi; }

        set { this._ResimAdi = value; }

    }

 

    public byte[] Resim

    {

        get { return this._Resim; }

        set { this._Resim = value; }

    }

 

      public ClassResim()

      {

           

      }

 

   

    /*

     * SQLEXPRESS'teki ResimlerDB isimli veritabanından

     * Resimler isimli Tablodaki tüm verileri

     * GridView'e bağlayacak metodumuz

     */

    public List<ClassResim> GetAllResimler()

    {

        List<ClassResim> Resimler = new List<ClassResim>();

        string veritabanibaglantisi =@"Server=.\SQLEXPRESS;

                                       Database=ResimlerDB;

                                       Trusted_Connection=true;";

        string strSQL = "SELECT * FROM Resimler";

        using (SqlConnection sqlConn = new SqlConnection(veritabanibaglantisi))

        {

            SqlCommand sqlComm = new SqlCommand(strSQL, sqlConn);

           

            sqlConn.Open();

            SqlDataReader sqlDr = sqlComm.ExecuteReader();

            /*

             * Read() metodu içinde veri varsa true döndürür.

             * veri okuma işlemi bittiğinde false döndürür.

             * false döndügü anda while döngüsü sonlanır.

             */

            while (sqlDr.Read())

            {

                ClassResim r = new ClassResim();

               

                r._ID = (int)sqlDr["ID"];

                r._ResimAdi = sqlDr["ResimAdi"] as String;

                r._Resim = (byte[])sqlDr["Resim"];

 

                Resimler.Add(r);

            }

            return Resimler;

        }

    }

  

    /*

     * SQLEXPRESS'teki ResimlerDB isimli veritabanından

     * Resimler isimli Tablodaki tüm resimleri

     * GridView'e bağlayacak metodumuz

     */

    public byte[] GetResimByID(int resimID)

    {

        byte[] Resim = null;

        string veritabanibaglantisi = @"Server=.\SQLEXPRESS;

                                        Database=ResimlerDB;

                                        Trusted_Connection=true;";

        string strSQL = "SELECT Resim FROM Resimler WHERE ID=@ID";

        using (SqlConnection sqlConn = new SqlConnection(veritabanibaglantisi))

        {

            SqlCommand sqlComm = new SqlCommand(strSQL, sqlConn);

            sqlComm.Parameters.AddWithValue("@ID", resimID);

    

            sqlConn.Open();

            Resim = (byte[])sqlComm.ExecuteScalar();

        }

        return Resim;

    }

}

 

ViewResim.aspx – Sayfası

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ViewResim.aspx.cs" Inherits="ViewResim" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title>ID'ye göre veritabanından resimleri göster</title>

</head>

<body>

    <form id="form1" runat="server">

   

    </form>

</body>

</html>

 

ViewResim.aspx.cs - Sayfası

 

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

public partial class ViewResim : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            ResimFormatla();

        }

    }

    private void ResimFormatla()

    {              

        ClassResim r = new ClassResim();

        int ID = 0;

 

        if (Request.QueryString["ID"] != null)

            ID = Convert.ToInt32(Request.QueryString["ID"]);

       

        byte[] Picture = r.GetResimByID(ID);

        Response.OutputStream.Write(Picture, 0, Picture.Length);

    }

}



Puan Ver

 
 

Yorum yapmak istiyorum





Yapılan Yorumlar


Yorum Tarihi Yapılan Yorum
4/29/2008 1:21:16 AM Merhabalar yukarıda yazmış oldugunuz kodu kullandım. Ama resim göstermede sorun yasıyorum. Hiç bir resmi göstermiyor. Inserte bir problem yok ama grid viewde gösterirken sorun var. Acil yardımcı olursanız sevinirim kolay gelsin

Yorum Tarihi Yapılan Yorum
7/30/2008 2:25:47 PM hiç faydalı degil

Yorum Tarihi Yapılan Yorum
3/13/2009 8:14:04 PM yapılan yorumların aksine müthiş bi proje hazırlamışsınız, hiç problemsiz kendi projeme entegre ettim zaten tamda aradığım şey buydu çokta önemli olmasada ufak bi yerde problem var ama kaydedilen resim gridview içerisinde görüntülendikten sonra sağ tıklayıp farklı kaydet tuşuna bastığım zaman hata alıyorum.aynı hatayı sahibinden.com dada görmüştüm, yöntemden kaynaklanan bi şey olması muhtemel çok teşekkürler pamir

Yorum Tarihi Yapılan Yorum
4/21/2009 3:28:31 PM teşekkürler