sqlserver数据库中图像的存取
SQLServer提供了一个特别的数据类型:image,它是一个包含binary数据的类型。下边这个例子就向你展示了如何将文本或照片放入到数据库中的办法。
1、建立一个表:
在SQLSERVER中建立这样结构的一个表:列名类型目的IDInteger主
键IDIMGTITLEVarchar(50)图片的标题IMGTYPEVarchar(50)图片类型.ASP.NET要以辨认的类型
IMGDATAImage用于存储二进制数据
2、存储图片到SQLSERVER数据库中
为了能存储到表中,你首先要上传它们到你的WEB服务器上,你可以开发一个webform,它用
来将客户端中TextBoxwebcontrol中的图片入到你的WEB服务器上来。将你的encType属性设置为:
myltipart/formdata.Streamimgdatastream=File1.PostedFile.InputStream;
intimgdatalen=File1.PostedFile.ContentLength;
stringimgtype=File1.PostedFile.ContentType;
stringimgtitle=TextBox1.Text;
byte[]imgdata=newbyte[imgdatalen];
intn=imgdatastream.Read(imgdata,0,imgdatalen);
stringconnstr=((NamevalueCollection)Context.GetConfig("appSettings"))["connstr"];
SqlConnectionconnection=newSqlConnection(connstr);
SqlCommandcommand=newSqlCommand("INSERTINTOImageStore(imgtitle,imgtype
,imgdata)
valueS(@imgtitle,@imgtype,@imgdata)",connection);
SqlParameterparamTitle=newSqlParameter("@imgtitle",SqlDbType.VarChar,
50);
paramTitle.value=imgtitle;
command.Parameters.Add(paramTitle);
SqlParameterparamData=newSqlParameter("@imgdata",SqlDbType.Image
);paramData.value=imgdata;
command.Parameters.Add(paramData);
SqlParameterparamType=newSqlParameter("@imgtype",SqlDbType.VarChar,50
);
paramType.value=imgtype;command.Parameters.Add(paramType);connection.Open();
intnumRowsAffected=command.ExecuteNonQuery();
connection.Close();
3、从数据库中恢复读取
现在让我们来从SQLServer中读取我们放入的数据吧!我们将要输出图片到你的浏览器上,你
也可以将它存放到你要的位置。
PrivatevoidPage_Load(objectsender,System.EventArgse)
{
stringimgid=Request.QueryString["imgid"];
stringconnstr=((NamevalueCollection)Context.GetConfig("appSettings"))
["connstr"];
stringsql="SELECTimgdata,imgtypeFROMImageStoreWHEREid="+
imgid; SqlConnectionconnection=newSqlConnection(connstr);
SqlCommandcommand=newSqlCommand(sql,connection);
connection.Open();
SqlDataReaderdr=command.ExecuteReader();
if(dr.Read())
{
Response.ContentType=dr["imgtype"].ToString();
Response.BinaryWrite((byte[])dr["imgdata"]); }
connection.Close();}
//要注意的是Response.BinaryWrite而不是Response.Write.