知识大全 ADO.NET Entity Framework存取数据库中图片
Posted 数据库
篇首语:知识才智是实践经验的总结。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ADO.NET Entity Framework存取数据库中图片相关的知识,希望对你有一定的参考价值。
ADO.NET Entity Framework存取数据库中图片 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
网站中的图片可以保存到文件系统中 即专门的目录用于图片的存放 这样的存储配上数据库中保存的图片路径信息 相信很多网站是这么选择的 这样的搭配由于存储和管理信息是分开的 其优点就是对数据库的性能不会产生太大影响 但是也正是由于这种分开网站的目录结构轻易是不可以变的 另外图片数据的备份需要数据库和文件目录同步进行 另外一种存储和管理图片的方式是将图片存到数据库中 如果站点的图片数量不是太多 图片不是太大 这种方式是相当适合的 本文我们看一下如何使用ADO NET Entity Framework构建数据访问层 实现将图片存到数据库中以及从数据库中获取图片
前期工作 创建数据表+构建数据访问层
第一步 创建数据表
表中需要一个用于保存图片的字段 类型设置为image 代码如下
CREATE TABLE [dbo] [images](
[id] [int] IDENTITY( ) NOT NULL
[imagefile] [image] NOT NULL)
第二步 构建数据访问层 该类型的数据的插入与一般的基本SQL类型不同 不过 平台上工作的程序员不需要考虑太多访问数据库的具体代码 我们可以选择ADO NET Entity Framework和Linq to SQL 这里我们以前者为例 方法简单介绍如下
项目中新建 选择ADO NET Entity Data Model 根据向导建立到数据库的连接 根据向导选择数据库中的刚才建立的表images 向导结束之后项目中会添加一个edmx类型的文件 默认的界面中会打开自动生成的实体类图 我们在向导中选择的所有表格都会对应一个实体类默认的名称是与数据表相同 此处的images对应的实体类也是images 但是这样默认使用的话会造成歧义 我们需要手动修改一下 点击images类在属性对话框中将Name属性改为image Entity Set Name可以改为imageSet或者不改动保持images表示的是image集合 之后实体类图中对应的类名也变成image了 这里假设存放图片的数据库名为XXX 那么生成的管理类也就是我们后面使用最多的类名为XXXEntities
将图片保存到SQL server数据库中
首先声明一个image类型的变量不妨称之为img image img = new image(); 继而创建一个XXXEntities对象 XXXEntities XXX = new XXXEntities();
(注意using命名空间和添加对System Data Entity的引用)
web页面中添加FileUpload控件 该控件提供一个属性PostedFile能够为服务器提供一个输入输出流 刚好可以供我们将选择的图片读到服务器的内存里 代码如下
System IO Stream stream = FileUpload PostedFile InputStream;
byte[] buffer = new byte[stream Length];
stream Read(buffer (int)stream Length);
stream Close();
img imagefile = buffer;
接下来就是将代表图片的字节数组存到数据库中 代码如下
XXX AddToimageSet(t);
XXX SaveChanges();
这样将图片存入数据库的操作就完成了
从数据库中获取图片并显示到页面
页面showImage aspx中放入一个Image控件 命名为Image 由于图片是从数据库取来的二进制文件 因而不像使用文件系统时图片都有自己的URL 我们可以直接设置其URL为图片在网站中的路径
解决方法如下 新建另外一个专门用于提供图片的页面getImage aspx 其功能仅仅是从数据库中读取图片
使用Response BinaryWrite()的方式将图片数据流输出 接下来您可能已经想到了 我们将image 的URL设置为上述getImage aspx 如果需要根据图片的id之类的信息进行选择 我们为该页面提供一个额外的id参数即可
读取图片 依然使用上述的XXX实体管理类 比如获取id为 的图片 代码为
int id = int Parse(Request QueryString[ id ]);
image img = XXX imageSet Where(i=> i ID == id) First();
Response BinaryWrite(img imageFile);
cha138/Article/program/net/201311/12098相关参考
知识大全 ADO.NET Entity Framework 试水——并发[4]
ADO.NETEntityFramework试水——并发[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来
知识大全 ADO.NET Entity Framework 试水——并发[3]
ADO.NETEntityFramework试水——并发[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来
知识大全 ADO.NET Entity Framework 试水——并发[1]
ADO.NETEntityFramework试水——并发[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来
知识大全 ADO.NET Entity Framework 试水——并发[2]
ADO.NETEntityFramework试水——并发[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来
知识大全 ADO.NET Entity Framework 入门示例向导
ADO.NETEntityFramework入门示例向导 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
知识大全 详解ADO.NET Entity Framework 4中枚举的使用
详解ADO.NETEntityFramework4中枚举的使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来
知识大全 ADO.NET Entity Framework存取数据库中的图片
ADO.NETEntityFramework存取数据库中的图片 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来
挖掘ADO.NETEntity框架的性能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ADON
知识大全 ADO.NET Framework beta 3和Linq
ADO.NETFrameworkbeta3和Linq 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧