该类型的数据的插入与一般的基本SQL类型不同,不过在.net 3.5平台上工作的程序员不需要考虑太多访问数据库的具体代码,我们可以选择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集合,ADO.NET Entity 之后实体类图中对应的类名也变成image了。这里假设存放图片的数据库名为XXX,那么生成的管理类也就是我们后面使用最多的类名为XXXEntities。
将图片保存到SQL server数据库中首先声明一个image类型的变量不妨称之为img, image img = new image();,继而创建一个XXXEntities对象, XXXEntities XXX = new XXXEntities();
页面showImage.aspx中放入一个Image控件,命名为Image1,由于图片是从数据库取来的二进制文件,因而不像使用文件ADO.NET Entity 系统时图片都有自己的URL,我们可以直接设置其URL为图片在网站中的路径,解决方法如下。#t#
新建另外一个专门用于提供图片的asp.net页面getImage.aspx,其功能仅仅是从数据库中读取图片,使用Response.BinaryWrite()的方式将图片数据流输出,接下来您可能已经想到了,我们将image1的URL设置为上述getImage.aspxADO.NET Entity ,如果需要根据图片的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);
- 文章出处:DIY部落(http://www.diybl.com/course/7_databases/database_other/20090816/168697.html)