ASP.NET如何存取 SQLServer数据库图片
@G4-5 T>ah C5~?w=%oc :VyoXE{j |]Ye( SQL Server提供了一个特别的数据类型:image,它是一个包含binary数据的类型。下边这个例子就向你展示了如何将文本或照片放入到数据库中的办法。在这篇文章中我们要看到如何在SQL Server中存储和读取图片。
3zN/]|Wt +HOFb9o8b 1、建立一个表:
\{ye bo+ 在SQL SERVER中建立这样结构的一个表:
3 ~Opg't Xj9uY9QtK 列名 类型 目的
fVi!jAjXg ID Integer 主键ID
@T#&\9 IMGTITLE Varchar(50) 图片的标题
-RU<kpThx IMGTYPE Varchar(50) 图片类型
tZx.%pt8 ASP.NET要以辨认的类型 IMGDATA Image 用于存储二进制数据
Org.4z5U C^<ziL awG| 2\ ^e-M7uns IMGTYPE Varchar(50)
7 R5Eu>. 图片类型. ASP.NET要以辨认的类型 IMGDATA Image 用于存储二进制数据
)8Uu_m G*O2W1H, vwVJ>'= 2、存储图片到SQL SERVER数据库中
f,rOAbx 为了能存储到表中,你首先要上传它们到你的WEB 服务器上,你可以开发一个web form,它用来将客户端中TextBox web control中的图片入到你的WEB服务器上来。将你的 encType 属性设置为:myltipart/formdata.
-&eCRC5W*: AL%3bgR Stream imgdatastream = File1.PostedFile.InputStream;
q:iU3k&. int imgdatalen = File1.PostedFile.ContentLength;
Hgg8$CjB string imgtype = File1.PostedFile.ContentType;
kRp7' 5} string imgtitle = TextBox1.Text;
h =udX8B{ byte[] imgdata = new byte[imgdatalen];
fCCF@+(; int n = imgdatastream.Read(imgdata,0,imgdatalen);
F7kf>S>'[ string connstr=((NameValueCollection)Context.GetConfig("appSettings"))["connstr"];
3.?b~G"|^ gbA`?ug$o SqlConnection connection = new SqlConnection(connstr);
rMz:M`$L| mj3FEJbBz SqlCommand command = new SqlCommand
$\{G*_S ("INSERT INTO ImageStore(imgtitle,imgtype,imgdata)
&xRbqVml VALUES ( @imgtitle, @imgtype,@imgdata )", connection );
HDrM~qc -0vV[QRzx SqlParameter paramTitle = new SqlParameter
"U NVg~2 ("@imgtitle", SqlDbType.VarChar,50 );
9/' h1o$ #AS`O|(g paramTitle.Value = imgtitle;
%mYscpt:d command.Parameters.Add( paramTitle);
.YQTyjDjKe \LO e 0U^ SqlParameter paramData = new SqlParameter( "@imgdata", SqlDbType.Image );
< 9Ye }Q paramData.Value = imgdata;
@BP4vJ*qZ command.Parameters.Add( paramData );
,9$ @+h; 6>{Hqgfyz, SqlParameter paramType = new SqlParameter( "@imgtype", SqlDbType.VarChar,50 );
[6@P5f E]p paramType.Value = imgtype;
o%CmR+ command.Parameters.Add( paramType );
gV J+C1 ] n\~(*t|b connection.Open();
PBhMl9jA int numRowsAffected = command.ExecuteNonQuery();
RFRbmHOJ connection.Close();
e6s6bw Tw0AW-7Rp 3、从数据库中恢复读取
[7'$p!!lBt X VDI3C= 现在让我们来从SQL Server中读取我们放入的数据吧!我们将要输出图片到你的浏览器上,你也可以将它存放到你要的位置。
sF<U;Z ?sHhX> private void Page_Load(object sender, System.EventArgs e)
}qnrR{.Q {
CI\g[ /^ string imgid =Request.QueryString["imgid"];
{pGci|& VT string connstr=((NameValueCollection)
y{d ? y{ Context.GetConfig("appSettings"))["connstr"];
2WGk]~M; string sql="SELECT imgdata, imgtype FROM ImageStore WHERE id = " + imgid;
Mfoj yK SqlConnection connection = new SqlConnection(connstr);
L@5%ma=v) SqlCommand command = new SqlCommand(sql, connection);
-V cB- connection.Open();
9^"u}Aq SqlDataReader dr = command.ExecuteReader();
Jlz9;ry!7 if(dr.Read())
Sy+K:yn?. {
Q6iljv Response.ContentType = dr["imgtype"].ToString();
<m%rH `$Ax Response.BinaryWrite( (byte[]) dr["imgdata"] );
u.%#ZHP- }
$7dDK@R connection.Close();
J:!e=oFc }
{k1)e|9+ Z,vz_Mn 要注意的是Response.BinaryWrite 而不是Response.Write.
OwCLd$e}
查看本文来源