当前位置: 首页 > 图文教程 > 认证考试 > java认证 > 使用ADO.NET Entity Framework构建数据访问层

java认证
软件工程之Java实现策略
讲述java语言中内部类的研究
简单介绍log4j一般的使用步骤
入门:Java语言中常见的十大误解
入门:Java代码编写的一般性指导
编写跨平台Java程序注意事项
java语言的网络功能与编程
java语言的文件操作方法
Java程序性能和速度优化实例
异常问题在Java编程中处理的优劣
处理Java及其相关字符集编码的问题
解读Java语言灵巧指针与垃圾回收
用于Java的SCA客户机和实现模型
开发中对于Java中文问题的几条分析原则
JAVA深入了解:JavaBeans 增加XPath功能
网络方式安装Linux(CentOS)系统的方法
一篇介绍 Java Socket 编程的经典文章
Java程序中用Servlet容器实现程序监听
使用Java进行图像处理 图像编码输出
JAVA认证:SCJP310-055中文考纲

java认证 中的 使用ADO.NET Entity Framework构建数据访问层


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-04   浏览: 326 ::
收藏到网摘: n/a

 

网站中的图片可以保存到文件系统中,即专门的目录用于图片的存放,这样的存储配上数据库中保存的图片路径信息,相信很多网站是这么选择的。这样的搭配由于存储和管理信息是分开的,其优点就是对数据库的性能不会产生太大影响,但是也正是由于这种分开网站的目录结构轻易是不可以变的,另外图片数据的备份需要数据库和文件目录同步进行。另外一种存储和管理图片的方式是将图片存到数据库中,如果站点的图片数量不是太多,图片不是太大,这种方式是相当适合的。本文我们看一下如何使用ADO.NET Entity Framework构建数据访问层,实现将图片存到数据库中以及从数据库中获取图片。

 

前期工作:创建数据表+构建数据访问层

第一步,创建数据表。

 

表中需要一个用于保存图片的字段,类型设置为image,代码如下:

 

CREATE TABLE [dbo].[images](

[id] [int] IDENTITY(1,1) NOT NULL,

[imagefile] [image] NOT NULL)

 

项目中新建,选择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的引用)

 

asp.net web页面中添加FileUpload控件,该控件提供一个属性PostedFile能够为服务器提供一个输入输出流,刚好可以供我们将选择的图片读到服务器的内存里,代码如下:

 

System.IO.Stream stream = FileUpload1.PostedFile.InputStream;

byte[] buffer = new byte[stream.Length];

stream.Read(buffer, 0, (int)stream.Length);

stream.Close();

img.imagefile = buffer;

接下来就是将代表图片的字节数组存到数据库中,代码如下:

 

XXX.AddToimageSet(t);

XXX.SaveChanges();

这样将图片存入数据库的操作就完成了。

 

数据库中获取图片并显示到asp.net页面

asp.net页面showImage.aspx中放入一个Image控件,命名为Image1,由于图片是从数据库取来的二进制文件,因而不像使用文件系统时图片都有自己的URL,我们可以直接设置其URL为图片在网站中的路径,解决方法如下:新建另外一个专门用于提供图片的asp.net页面getImage.aspx,其功能仅仅是从数据库中读取图片,

使用Response.BinaryWrite()的方式将图片数据流输出,接下来您可能已经想到了,我们将image1的URL设置为上述getImage.aspx,如果需要根据图片的id之类的信息进行选择,我们为该asp.net页面提供一个额外的id参数即可。

 

读取图片,依然使用上述的XXX实体管理类,比如获取id为1的图片,代码为:

 

int id = int.Parse(Request.QueryString["id"]);

image img = XXX.imageSet.Where(i=> i.ID == id).First();

Response.BinaryWrite(img.imageFile);

showImage.aspx中为Image1控件设置URL为"getImage.aspx?id=1"(可以在cs代码中编程设置,也可以在aspx中静态设置),就可以正确显示需要的图片了。