.Net Winform和.Net webform(asp.net)中将图片存入sqlserver中并读取显示的方法

VBA 读取SQLServer中二进制图片插入到当前工作表中 一、点击插入图片输入员工工号 二、插入图片实现代码 '点击按钮弹框输入员工工号 Sub getPic() Load UserForm1 UserForm1.Show End Sub '输入工号后点击确定按钮,将工号匹配的图片插入到页脚 Private Sub CommandButton1_Click() Dim StaffCode As String StaffCode = TextBox1.Value Dim yes As Integer If StaffCode .. 阅读详情
本文总结如何在.Net Winform和.Net webform(asp.net)中将图片存入sqlserver中并读取显示的方法
1,使用asp.net将图片上传并存入SqlServer中,然后从SqlServer中读取并显示出来
一,上传并存入SqlServer
数据库结构
create table test
{
id identity(1,1),
FImage image
}
相关的存储过程
Create proc UpdateImage
(
@UpdateImage Image
)
As
Insert Into test(FImage) values(@UpdateImage)
GO

在UpPhoto.aspx文件中添加如下:
<input id="UpPhoto" name="UpPhoto" runat="server" type="file">
<asp:Button id="btnAdd" name="btnAdd" runat="server" Text="上传"></asp:Button>

然后在后置代码文件UpPhoto.aspx.cs添加btnAdd按钮的单击事件处理代码:
private void btnAdd_Click(object sender, System.EventArgs e)
{
//获得图象并把图象转换为byte[]
HttpPostedFile upPhoto=UpPhoto.PostedFile;
int upPhotoLength=upPhoto.ContentLength;
byte[] PhotoArray=new Byte[upPhotoLength];
Stream PhotoStream=upPhoto.InputStream;
PhotoStream.Read(PhotoArray,0,upPhotoLength);

//连接数据库
SqlConnection conn=new SqlConnection();
conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa";

SqlCommand cmd=new SqlCommand("UpdateImage",conn);
cmd.CommandType=CommandType.StoredProcedure;

cmd.Parameters.Add("@UpdateImage",SqlDbType.Image);
cmd.Parameters["@UpdateImage"].Value=PhotoArray;

//如果你希望不使用存储过程来添加图片把上面四句代码改为:
//string strSql="Insert into test(FImage) values(@FImage)";
//SqlCommand cmd=new SqlCommand(strSql,conn);
//cmd.Parameters.Add("@FImage",SqlDbType.Image);
//cmd.Parameters["@FImage"].Value=PhotoArray;

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}

二,从SqlServer中读取并显示出来
在需要显示图片的地方添加如下代码:
<asp:image id="imgPhoto" runat="server" ImageUrl="ShowPhoto.aspx"></asp:image>

ShowPhoto.aspx主体代码:
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
SqlConnection conn=new SqlConnection()
conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa";

string strSql="select * from test where id=2";//这里假设获取id为2的图片
SqlCommand cmd=new SqlCommand()
reader.Read();
Response.ContentType="application/octet-stream";
Response.BinaryWrite((Byte[])reader["FImage"]);
Response.End();
reader.Close();
}
}

3,在winform中将图片存入sqlserver,并从sqlserver中读取并显示在picturebox中

1,存入sqlserver
数据库结构和使用的存储过过程,同上面的一样
1.1,在窗体中加一个OpenFileDialog控件,命名为ofdSelectPic
1.2,在窗体上添加一个打开文件按钮,添加如下单击事件代码:
Stream ms;
byte[] picbyte;
//ofdSelectPic.ShowDialog();
if (ofdSelectPic.ShowDialog()==DialogResult.OK)
{
if ((ms=ofdSelectPic.OpenFile())!=null)
{
//MessageBox.Show("ok");
picbyte=new byte[ms.Length];
ms.Position=0;
ms.Read(picbyte,0,Convert.ToInt32(ms.Length));
//MessageBox.Show("读取完毕!");

//连接数据库
SqlConnection conn=new SqlConnection();
conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa";

SqlCommand cmd=new SqlCommand("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中
2.1 添加一个picturebox,名为ptbShow
2.2 添加一个按钮,添加如下响应事件:
SqlConnection conn=new SqlConnection();
conn.ConnectionString="Data Source=localhost;Database=test;User Id=sa;Pwd=sa";

string strSql="select FImage from test where id=1";

SqlCommand cmd=new SqlCommand(strSql,conn);

conn.Open();
SqlDataReader reader=cmd.ExecuteReader();
reader.Read();

MemoryStream ms=new MemoryStream((byte[])reader["FImage"]);

Image image=Image.FromStream(ms,true);

reader.Close();
conn.Close();

ptbShow.Image=image;  



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1361544

 
用Excel VBA连接SQL Server数据库将表中的数据显示到Excel中 本实例使用VB语言OLEDB类连接SQL Server 2005数据库。 在sheet1上右键→查看代码,加入如下代码: Sub admin() Dim conn, xRs Set conn = CreateObject("ADODB.Connection") conn.Open "Provider=SQLOLEDB.1;Persist Security Info= 阅读详情

相关推荐

在SQL Server中存储显示图片

在SQL Server中存储显示图片,很好用的例子

c#form+mysql储存读取图片_C#_C#操作数据库中存取图片文件的方法,本文实例讲述了C#操作数据库 - phpStudy...

C#操作数据库中存取图片文件的方法本文实例讲述了C#操作数据库中存取图片文件的方法。分享给大家供大家参考。具体如下:private string sqlconnstr = "Data Source=.;Database=db_test;User id=sa;PWD=123456";/*功能:把一种图片插入到数据库中*返回值:无*/void InsertImageToDB(){//将需要存储的图片...

weixin_36488589的博客 266

C# 通过存储过程将Excel文档导入SQL Server数据库

以Excel表格形式导入到数据库,为此写了一个这样一个测试程序,当然,里面导入的Excel表格的字段、表名都可以自定义的,过程比较简单,主要用到了Sql ServerExcel的接口类库

C# WinForm 上传图片,文件到服务器的方法Uploader.ashx

网上有很多方案,起初用时,因为对asp.net不太了解,觉得FTP实现不错,可是后来发现,如果机器在域控下,就会有问题。一年过去了,asp.net也熟悉了,知道ajax没事应该用ashx,验证码也用ashx,当然这里要说的WinForm上传也应该是ashx了吧,哈哈,先提供简单思路:接收文件的asp.net是:Uploader.ashx,相关代码:view plaincop

1424

开源派系

上班前看看业内新闻好像已成为定势今天看到一篇,有点意思,原文如下,转自javaeye丐帮 - Apache Software Foundation在我开始学习Java的时候,Apache的Jakarta子项目还很弱小,Apache的头牌是Apache HTTPD Server(至今也还是头牌),如今已经成了江湖第一大帮。Apache势力庞大,背后有众多大厂商的支持,例如IBM资助了apache

20年老程序员重新学编程 1181

Unix/Linux/BSD 它们之间的关系以及各自派系的介绍

Unix 是什么 电话发明人贝尔于 1877 年创建的美国贝尔电话公司,后来创建了一家子公司叫美国电信业公司,1900年美国电信业公司接管了贝尔公司的全部资产,成为母公司,改名为美国电话电报公司(AT&T),美国电话电报公司有个部门叫贝尔实验室,以肯•汤普森为首的贝尔实验室研究人员于 1969 年实现了一种分时操作系统的雏形,1970 年该系统正式取名为 UNIX。而肯•汤普森的同事丹尼斯•里奇发明了传说中的 C 语言,这是一种适合编写系统软件的高级语言,后来 UNIX 系统的绝大部分源代码都用 C

liaowenxiong的博客 7237

转帖:开源空间信息软件体系与技术…

转帖:开源空间信息软件体系与技术概述 由 Rocket » 2007-06-11 22:20 开源空间信息软件体系与技术概述  作者:西陆星 发表时间: 2007/06/11  ... 国际地理空间开源基金会(以下简称为OSGeo)中国中心于去年9月19日在北京成立,这意味着中国已经在开源空间信息软件发展方面, 走在了整个IT主流的前面,参加会议的共创软件联盟副理事长宫敏博士也

zxg519的专栏 735

基于.NET 2.0的GIS开源项目SharpMap分析手记(十):开源空间信息软件体系与技术概述

基于.NET 2.0的GIS开源项目SharpMap分析手记(十):开源空间信息软件体系与技术概述粟卫民 http://www.gisdev.cn/ http://blog.csdn.net/suen/ 日期:2007-6-15转载自:西陆星 http://www.cngis.org/bbs/showthread.php?p=43668#post43668所谓自由软件指允许任何人可以自

地理信息,无处不在 6713

C# WINFOMR 添加本地数据库示例

C# WINFOMR 添加本地数据库示例(.sdf)

C# SqlServer数据库备份 恢复

用C#语句实现数据库的备份、恢复。有源代码。

GIS开源程序收集

 作者:粟卫民    创建日期:2007-6-11     最后修改:2007-6-22 注意: 每一个项目包含以下信息: 名称 主题 分类 描述 开始时间 语言 许可 演示网址 项目网址 成熟度 活跃度 评价   分类包括:GIS基础函数库、GIS控件、GIS桌面程序、GIS数据引擎、WEBGIS浏览器端程序、WEBGIS服务器程序、GPS相

u011324590的专栏 956

[转】开源空间信息软件体系与技术概述

这篇文章写得很不错,是从互联网上下载的,因为没有其他的信息(作者地址),所以在这里无法将原文的地址公布出来,对于作者表示道歉。如果本文作者看到此篇文章,请联系我,我会将你的名字空间地址在这里注明的。---飞羽飞之猪 2010年6月19日 开源空间信息软件体系与技术概述 所谓自由软件指允许任何人可以自由使用、复制、修改、分发的软件,但它不能保证免费获得的自由。自由软件在分发/获得方面是双模式的,就是说,可以免费共享,也可以商业买卖。 所谓开源软件指软件的源代码(软件程序的原始文件)是对任

飞羽飞の猪の博客 1943

GIS开源软件概述

从软件底层的开发语言角度讲,开源空间信息软件可以被独立的分为以下三种技术体系门类,在每种分类体系内部,开发人员往往是基于不同的项目交叉工作的,所以这种分法仅仅是方便了熟悉某种开发语言的程序员,对于用户应用人员而言, 意义不大。 “C”派系项目 “C”派系项目包括了UMN MapServer、GRASS、GDAL/OGR、OSSIM、Proj4、GEOS、PostGIS、 QGIS、Map...

conkeyn的专栏 256

探索Beyond All Reason:重新定义开源实时战略游戏体验

Beyond All Reason是一款基于Spring引擎开发的开源实时战略(RTS)游戏,它将经典RTS的深度策略与现代图形技术完美融合,为玩家提供免费且高质量的游戏体验。作为完全开源的项目,它不仅继承了传统RTS的核心玩法,还通过社区驱动的开发模式持续进化,成为开源游戏领域的典范之作。 ## 1 项目起源与核心理念 Beyond All Reason诞生于开源社区对经典RTS游戏的热爱与

gitblog_00749的博客 307

(转)开源GIS总结(一)——总结

开源GIS总结(一)——总结_xcymorningsun的专栏-CSDN博客_开源gis 谈到GIS软件,首先让我们想到的便是GIS界的龙头大哥ESRI公司旗下的ArcGIS产品,从最初接触的version 9.2到如今的version 10.6,其发展可谓风生水起。MapInfo软件也不错,可是给人的感觉是渐渐被淘汰了似的,周围使用该软件的人不算多。然后接触了一些的是国内的SuperMap软件,MapGIS软件等,很遗憾的是作为武大的学生,竟然没有使用过GeoStar的产品。这些产品在国内GIS中的份

yaoct的博客 1638
上一篇: 用Sql Server存储上载图片
下一篇: 上传图片以二进制插入到数据库,且读取显示
gxy_blue
博客等级 码龄20年 0粉丝 2原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值