Click here to Skip to main content
15,881,812 members
Please Sign up or sign in to vote.
5.00/5 (1 vote)
See more:
Hi All,

I want to know how to retrieve pdf from database(SQL SERVER) in my asp.net and C#.net. Actually in my project I have a gridview with a button called download and id of pdf file and name of pdf file, in runtime when I click the download button the pdf file will open with acrobat reader.
C#
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public partial class image : System.Web.UI.Page
{
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["NewJapConnectionString"].ToString());

    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void GridView2_SelectedIndexChanged(object sender, EventArgs e)
    {
        //using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["NewJapConnectionString"].ToString())) 

        con.Open();
        SqlCommand cmd = new SqlCommand("select ImageName,Extension,Image from Images where R_No=@R_No", con);
        cmd.Parameters.AddWithValue("R_No", GridView2.SelectedRow.Cells[1].Text);
        SqlDataReader dr = cmd.ExecuteReader();

        if (dr.Read())
        {
            Response.Clear();
            Response.Buffer = true;

            Response.ContentType = dr["Extension"].ToString();
            Response.AddHeader("content-disposition", "attachment;filename=" + dr["ImageName"].ToString());
            Response.Charset = "";
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.BinaryWrite((byte[])dr["Image"]);

            Response.End();

        }
       
    }
}


-----------------------
XML
<%@ Page Language="C#" MasterPageFile="~/VC_Master.master" AutoEventWireup="true" CodeFile="image.aspx.cs" Inherits="image" Title="Untitled Page" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"  
    DataKeyNames="R_No" DataSourceID="SqlDataSource1"  
    onselectedindexchanged="GridView2_SelectedIndexChanged" Width="339px"> 
    <columns> 
        <asp:CommandField ShowSelectButton="True"  
            SelectText="Download" ButtonType="Button"  SelectImageUrl="Handler.ashx" /> 
        <asp:BoundField DataField="R_No" HeaderText="ID" InsertVisible="False"  
            ReadOnly="True" SortExpression="ID" /> 
        <asp:BoundField DataField="ImageName" HeaderText="FileName"  
            SortExpression="FileName" />
            
    </columns> 
 
<asp:SqlDataSource ID="SqlDataSource1" runat="server"  
    ConnectionString="<%$ ConnectionStrings:NewJapConnectionString %>"  
    DeleteCommand="delete from Images where R_No=@R_No"  
    SelectCommand="select R_No, ImageName from Images"  
     
    InsertCommand="insert into Images (ImageName,Extension,Image) values (@ImageName,@Extension,@Image)"> 
    <deleteparameters> 
        <asp:ControlParameter ControlID="GridView2" Name="R_No"  
            PropertyName="SelectedValue" /> 
    </deleteparameters> 


*** but its not working
Posted
Updated 7-Jul-11 23:50pm
v5
Comments
R. Giskard Reventlov 8-Jul-11 5:13am    
What have you already tried for yourself?
bsty123 8-Jul-11 5:44am    
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public partial class image : System.Web.UI.Page
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["NewJapConnectionString"].ToString());

protected void Page_Load(object sender, EventArgs e)
{

}
protected void GridView2_SelectedIndexChanged(object sender, EventArgs e)
{
//using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["NewJapConnectionString"].ToString()))

con.Open();
SqlCommand cmd = new SqlCommand("select ImageName,Extension,Image from Images where R_No=@R_No", con);
cmd.Parameters.AddWithValue("R_No", GridView2.SelectedRow.Cells[1].Text);
SqlDataReader dr = cmd.ExecuteReader();

if (dr.Read())
{
Response.Clear();
Response.Buffer = true;

Response.ContentType = dr["Extension"].ToString();
Response.AddHeader("content-disposition", "attachment;filename=" + dr["ImageName"].ToString());
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.BinaryWrite((byte[])dr["Image"]);

Response.End();

}

}
}

-----------------------
<%@ Page Language="C#" MasterPageFile="~/VC_Master.master" AutoEventWireup="true" CodeFile="image.aspx.cs" Inherits="image" Title="Untitled Page" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"
DataKeyNames="R_No" DataSourceID="SqlDataSource1"
onselectedindexchanged="GridView2_SelectedIndexChanged" Width="339px">
<columns>
<asp:CommandField ShowSelectButton="True"
SelectText="Download" ButtonType="Button" SelectImageUrl="Handler.ashx" />
<asp:BoundField DataField="R_No" HeaderText="ID" InsertVisible="False"
ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="ImageName" HeaderText="FileName"
SortExpression="FileName" />



<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:NewJapConnectionString %>"
DeleteCommand="delete from Images where R_No=@R_No"
SelectCommand="select R_No, ImageName from Images"

InsertCommand="insert into Images (ImageName,Extension,Image) values (@ImageName,@Extension,@Image)">
<deleteparameters>
<asp:ControlParameter ControlID="GridView2" Name="R_No"
PropertyName="SelectedValue" />





*** but its not working

1 solution

 
Share this answer
 
Comments
bsty123 8-Jul-11 5:28am    
Thanks but i have already use the second link but this code not correct it is not complete , string strExtenstion = “extension of retrieved file”;

byte[] bytFile = “Byte array retrieved from database”;

these two are not suported . plz send me proper solution
and 1ST link use VB.net because i am using C#.net

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900