您的位置:首页 > 数据库

Asp.net 2.0(C#)图片存储到数据库和从数据库读取显示

2008-04-10 11:36 1216 查看
最近捣鼓了一下,效果就是这样:
图1:



图2:



ImageFileUpload.aspx:


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




<!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>图片保存和显示</title>


</head>


<body>


<form id="Form2" enctype="multipart/form-data" runat="server">




<asp:Table ID="Table1" Runat="server" Width="39%" BorderWidth="1" BackColor="Beige">




<asp:TableRow runat="server">




<asp:TableCell ColumnSpan="2" BackColor="Red" runat="server">




<asp:Label ID="Label1" Font-size="12px" ForeColor="White" font-bold="True" Runat="server" Text="添加" Font-Names="verdana" />




</asp:TableCell>




</asp:TableRow>




<asp:TableRow runat="server">




<asp:TableCell HorizontalAlign="Right" runat="server"><asp:Label ID="Label2" Font-size="12px" Runat="server" Text="名字" Font-Names="verdana" /></asp:TableCell>




<asp:TableCell runat="server"><asp:TextBox id="txtPersonName" Runat="server" /></asp:TableCell>




</asp:TableRow>




<asp:TableRow runat="server">




<asp:TableCell HorizontalAlign="Right" runat="server"><asp:Label ID="Label3" Font-size="12px" Runat="server" Text="Email" Font-Names="verdana" /></asp:TableCell>




<asp:TableCell runat="server"><asp:TextBox id="txtPersonEmail" Runat="server" /></asp:TableCell>




</asp:TableRow>




<asp:TableRow runat="server">




<asp:TableCell HorizontalAlign="Right" runat="server"><asp:Label ID="Label4" Font-size="12px" Runat="server" Text="性别" Font-Names="verdana" /></asp:TableCell>




<asp:TableCell runat="server">




<asp:RadioButton GroupName="sex" Font-Size="12px" Text="男性" ID="sexMale" Runat="server"   Checked="true" />




<asp:RadioButton GroupName="sex" Font-Size="12px" Text="女性" ID="sexFeMale" Runat="server" />




</asp:TableCell>




</asp:TableRow>




<asp:TableRow runat="server">




<asp:TableCell HorizontalAlign="Right" runat="server"><asp:Label ID="Label5" Font-size="12px" Runat="server" Text="生日" Font-Names="verdana" /></asp:TableCell>




<asp:TableCell runat="server"><asp:TextBox id="txtPersonDob" runat="server" /></asp:TableCell>




</asp:TableRow>




<asp:TableRow runat="server">




<asp:TableCell HorizontalAlign="Right" runat="server"><asp:Label ID="Label6" Font-size="12px" Runat="server" Text="图片" Font-Names="verdana" /></asp:TableCell>




<asp:TableCell runat="server"><input type="file" id="PersonImage" runat="server" /></asp:TableCell>




</asp:TableRow>




<asp:TableRow runat="server">




<asp:TableCell ColumnSpan="2" HorizontalAlign="Center" runat="server">




<asp:Button ID="Button1" Text="添加" OnClick="AddPerson" runat="server" />




</asp:TableCell>




</asp:TableRow>




</asp:Table>


<br />


<table>


<tr>


<td align="left" valign="top" style="width: 181px">


<asp:Label ID="Label_Message" runat="server" Font-Size="10pt"></asp:Label></td>


<td style="width: 7px">


</td>


<td align="left" style="width: 18px" valign="top">


</td>


</tr>


<tr>


<td style="width: 181px;" align="left" valign="top">


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="PersonID" DataSourceID="SqlDataSource_SelectImage" ForeColor="#333333" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" Font-Size="10pt" Width="200px" BackColor="#FFE0C0">


<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />


<Columns>


<asp:TemplateField HeaderText="序号" InsertVisible="False" SortExpression="PersonID">


<EditItemTemplate>


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


</EditItemTemplate>


<ItemTemplate>


<asp:Label ID="Label1" runat="server" Text='<%# Bind("PersonID") %>'></asp:Label>


</ItemTemplate>


<HeaderStyle Width="35px" />


</asp:TemplateField>


<asp:BoundField DataField="PersonName" HeaderText="名字" SortExpression="PersonName" />


<asp:BoundField DataField="PersonImageType" HeaderText="图片类型" SortExpression="PersonImageType" />


<asp:CommandField ShowSelectButton="True" >


<ItemStyle Width="30px" />


</asp:CommandField>


</Columns>


<RowStyle BackColor="#EFF3FB" />


<EditRowStyle BackColor="#2461BF" />


<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />


<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />


<HeaderStyle BackColor="Red" Font-Bold="True" ForeColor="White" />


<AlternatingRowStyle BackColor="White" />


</asp:GridView>


</td>


<td style="width: 7px; height: 180px;">


</td>


<td align="left" style="width: 18px; height: 180px;" valign="top">


<asp:Image ID="Image_Show" runat="server" /></td>


</tr>


<tr>


<td style="width: 181px">


</td>


<td style="width: 7px">


</td>


<td style="width: 18px">


</td>


</tr>


<tr>


<td style="width: 181px; height: 21px;">


</td>


<td style="width: 7px; height: 21px;">


</td>


<td style="width: 18px; height: 21px;">


</td>


</tr>


</table>


<asp:SqlDataSource ID="SqlDataSource_SelectImage" runat="server" ConnectionString="<%$ ConnectionStrings:ImageSelect_ConnectionString %>"


SelectCommand="SELECT PersonID, PersonName, PersonImageType FROM Person"></asp:SqlDataSource>




</form>


</body>


</html>



ImageFileUpload.aspx.cs:


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;


using System.Data.SqlClient;


using System.IO;










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






{


protected void Page_Load(object sender, EventArgs e)






{




}












protected void AddPerson(object sender, EventArgs e)






{


int intImageSize;


string strImageType;


Stream ImageStream;




intImageSize = PersonImage.PostedFile.ContentLength;


ImageStream = PersonImage.PostedFile.InputStream;


strImageType = PersonImage.PostedFile.ContentType;


Byte[] ImageContent = new Byte[intImageSize];


int intStatus;


intStatus = ImageStream.Read(ImageContent, 0, intImageSize);




//string ConnStr = System.Configuration.ConfigurationSettings.AppSettings["Lw_SqlConnectString"];


string ConnStr = "Data Source=127.0.0.1;Initial Catalog=Pfrmis_TZXY;User ID=sa";


SqlConnection myConnection=new SqlConnection(ConnStr);


SqlCommand myCommand=new SqlCommand("sp_person_isp", myConnection);


myCommand.CommandType = CommandType.StoredProcedure;




SqlParameter prmEmail=new SqlParameter("@PersonEmail", SqlDbType.VarChar, 255);




prmEmail.Value = txtPersonEmail.Text;


myCommand.Parameters.Add(prmEmail);




SqlParameter prmName=new SqlParameter("@PersonName", SqlDbType.VarChar, 255);




prmName.Value = txtPersonName.Text;


myCommand.Parameters.Add(prmName);




SqlParameter prmSex =new SqlParameter("@PersonSex", SqlDbType.Char, 1);


if (sexMale.Checked)






{


prmSex.Value = "M";


}


else






{


prmSex.Value = "F";


}


myCommand.Parameters.Add(prmSex);




SqlParameter prmPersonDOB= new SqlParameter("@PersonDOB", SqlDbType.DateTime);




prmPersonDOB.Value = txtPersonDob.Text;




myCommand.Parameters.Add(prmPersonDOB);




SqlParameter prmPersonImage =new SqlParameter("@PersonImage", SqlDbType.Image);




prmPersonImage.Value = ImageContent;




myCommand.Parameters.Add(prmPersonImage);




SqlParameter prmPersonImageType =new SqlParameter("@PersonImageType", SqlDbType.VarChar, 255);




prmPersonImageType.Value = strImageType;




myCommand.Parameters.Add(prmPersonImageType);




try






{





myConnection.Open();


myCommand.ExecuteNonQuery();




myConnection.Close();




Response.Write("添加成功!");




}


catch(SqlException SQLexc)






{


Response.Write("插入失败,错误如下: " + SQLexc.ToString());


}









}







protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)






{




// Session["id"] = "";





Label lbl1;


lbl1 = (Label)GridView1.SelectedRow.Cells[0].FindControl("Label1");




Label_Message.Text ="你选择的图片是:"+lbl1.Text;


Session["id"] = lbl1.Text;


Image_Show.ImageUrl = "ImageShow.aspx";


}


}



ImageShow.aspx:(显示图片)


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




<!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>无标题页</title>


</head>


<body>


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


<div>





</div>


</form>


</body>


</html>



ImageShow.aspx.cs:


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;


using System.Data.SqlClient;


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






{


protected void Page_Load(object sender, EventArgs e)






{


//连接数据库的第一种方法


SqlConnection myConnection = new SqlConnection(ConfigurationManager.AppSettings["Lw_SqlConnectString"]);




//连接数据库的第二种方法


//SqlConnection myConnection = new SqlConnection("Data Source=.;Initial Catalog=Tcis_shrl;User Id=sa;Password=;");


if (Session["id"] == null)






{




}


else






{


string sql = "Select PersonImage from Person Where PersonID=";


SqlCommand myCommand = new SqlCommand(sql + Session["id"].ToString().Trim(), myConnection);





try






{


myConnection.Open();


SqlDataReader myDataReader;


myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);


if (myDataReader.Read())






{


Response.Clear();







// Response.ContentType = "image/pjpeg";//可有可无


Response.BinaryWrite((byte[])myDataReader["PersonImage"]);


}


myConnection.Close();


}


catch (SqlException SQLexc)






{


Response.Write(SQLexc);


}


Response.End();


}


}


}



最后一个存储过程:
Drop Table Person

Go



Create Table Person

(

PersonID Int Identity,

PersonEmail Varchar(255),

PersonName Varchar(255),

PersonSex Char(1),

PersonDOB DateTime,

PersonImage Image,

PersonImageType Varchar(255)

)



Drop Proc sp_person_isp

Go



Create Proc sp_person_isp

@PersonEmail Varchar(255),

@PersonName Varchar(255),

@PersonSex Char(1),

@PersonDOB DateTime,

@PersonImage Image,

@PersonImageType Varchar(255)

As

Begin

Insert into Person

(PersonEmail, PersonName, PersonSex,

PersonDOB, PersonImage, PersonImageType)

Values

(@PersonEmail, @PersonName, @PersonSex,

@PersonDOB, @PersonImage, @PersonImageType)

End



Go
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: