|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
听03很多师兄说主讲老师杭城方讲课很差就连旁听也没有去了)server|sql本文总结怎样在.NetWinForm和.NetWebForm(asp.net)中将图片存进SQLServer中并读取显现的办法。
1.利用asp.net将图片上传并存进SQLServer中,然后从SQLServer中读取并显现出来:
1)上传并存进SQLServer
数据库布局
createtabletest
{
ididentity(1,1),
FImageimage
}
相干的存储历程
CreateprocUpdateImage
(
@UpdateImageImage
)
As
InsertIntotest(FImage)values(@UpdateImage)
GO
在UpPhoto.aspx文件中增加以下:
<inputid="UpPhoto"name="UpPhoto"runat="server"type="file">
<asp:Buttonid="btnAdd"name="btnAdd"runat="server"Text="上传"></asp:Button>
然后在后置代码文件UpPhoto.aspx.cs增加btnAdd按钮的单击事务处置代码:
privatevoidbtnAdd_Click(objectsender,System.EventArgse)
{
//取得图像并把图像转换为byte[]
HttpPostedFileupPhoto=UpPhoto.PostedFile;
intupPhotoLength=upPhoto.ContentLength;
byte[]PhotoArray=newByte[upPhotoLength];
StreamPhotoStream=upPhoto.InputStream;
PhotoStream.Read(PhotoArray,0,upPhotoLength);
//毗连数据库
SqlConnectionconn=newSqlConnection();
conn.ConnectionString="DataSource=localhost;Database=test;UserId=sa;Pwd=sa";
SqlCommandcmd=newSqlCommand("UpdateImage",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
cmd.Parameters["@UpdateImage"].Value=PhotoArray;
//假如你但愿不利用存储历程来增加图片把下面四句代码改成:
//stringstrSql="Insertintotest(FImage)values(@FImage)";
//SqlCommandcmd=newSqlCommand(strSql,conn);
//cmd.Parameters.Add("@FImage",SqlDbType.Image);
//cmd.Parameters["@FImage"].Value=PhotoArray;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
2)从SQLServer中读取并显现出来
在必要显现图片的中央增加以下代码:
<asp:imageid="imgPhoto"runat="server"ImageUrl="ShowPhoto.aspx"></asp:image>
ShowPhoto.aspx主体代码:
privatevoidPage_Load(objectsender,System.EventArgse)
{
if(!Page.IsPostBack)
{
SqlConnectionconn=newSqlConnection()
conn.ConnectionString="DataSource=localhost;Database=test;UserId=sa;Pwd=sa";
stringstrSql="select*fromtestwhereid=2";//这里假定猎取id为2的图片
SqlCommandcmd=newSqlCommand(strSql,conn);
conn.Open();
SqlDataReaderreader=cmd.ExecuteReader();
reader.Read();
Response.ContentType="application/octet-stream";
Response.BinaryWrite((Byte[])reader["FImage"]);
Response.End();
reader.Close();
}
}
2.在WinForm中将图片存进SQLServer,并从SQLServer中读取并显现在picturebox中
1),存进SQLServer
数据库布局和利用的存储过历程,同下面的一样
起首,在窗体中加一个OpenFileDialog控件,定名为ofdSelectPic;
然后,在窗体上增加一个翻开文件按钮,增加以下单击事务代码:
Streamms;
byte[]picbyte;
//ofdSelectPic.ShowDialog();
if(ofdSelectPic.ShowDialog()==DialogResult.OK)
{
if((ms=ofdSelectPic.OpenFile())!=null)
{
//MessageBox.Show("ok");
picbyte=newbyte[ms.Length];
ms.Position=0;
ms.Read(picbyte,0,Convert.ToInt32(ms.Length));
//MessageBox.Show("读取终了!");
//毗连数据库
SqlConnectionconn=newSqlConnection();
conn.ConnectionString="DataSource=localhost;Database=test;UserId=sa;Pwd=sa";
SqlCommandcmd=newSqlCommand("UpdateImage",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
cmd.Parameters["@UpdateImage"].Value=picbyte;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
ms.Close();
}
}
2)读取并显现在picturebox中
起首,增加一个picturebox,名为ptbShow
然后,增加一个按钮,增加以下呼应事务:
SqlConnectionconn=newSqlConnection();
conn.ConnectionString="DataSource=localhost;Database=test;UserId=sa;Pwd=sa";
stringstrSql="selectFImagefromtestwhereid=1";
SqlCommandcmd=newSqlCommand(strSql,conn);
conn.Open();
SqlDataReaderreader=cmd.ExecuteReader();
reader.Read();
MemoryStreamms=newMemoryStream((byte[])reader["FImage"]);
Imageimage=Image.FromStream(ms,true);
reader.Close();
conn.Close();
ptbShow.Image=image;
原文地点:http://stewen.cnblogs.com/archive/2005/12/20/300587.aspx
另外,小型软件代码重用价值低,没有必要跨平台;大型软件,有严格的规划、部署,不可以随意跨平台。 |
|