SQL Server:存储图像和BLOB文件(二)
2008-04-14 09:54:28 来源:WEB开发网下面要用的语句:
SqlCommand objCmd = new SqlCommand(sTSQL, objConn);
创建一个将SQL语句和连接绑定在一起的指令对象,然后在以下的语句中执行该指令对象:
SqlDataReader dr = objCmd.ExecuteReader();
此语句为该指令对象返回指定并设置了一个新的DataReader。dr.Read语句加载了第一条结果(也是本例中唯一的结果)。如果我们不能保证能够成功读取数据,那么可以使用IF语句来进行测试,在本系列的下一篇文章会举这样一个例子。
现在DataReader读取了图像二进制数据,并使用Response.BinaryWrite来将数据流入到指定网页。注意网页的html是空的,没有任何内容。BinaryWrite不需要任何的html对象。事实上,网页上的任何html都不会显示出来,例如我们可以在div之间粘贴一段字符串:
<div>
Enjoy this image
</div>
但当打开运行网页时,只显示了图像,并没有显示该字符串:
在我们例子里的数据库中,在SQL Server中还存放了相关的其他数据,例如文件名,我们想要让这些数据和该图像一起在页面中显示出来。因为Binary Write会覆盖页面上的任何html,所以我们需要另外想一个解决办法。将该页面存储为GetPicture.aspx。创建一个新页面,并在上面放置一个图像控件,将图像的网址指向GetPicture页,如下所示:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Here is the image <asp:Image ID="Image1" runat="server" ImageUrl="GetPicture.aspx" />
</div>
</form>
</body>
</html>
因为存储在SQL Server的二进制流不能够直接传递给图像空间,所以间接的传递包含该二进制流的网页。
总结
二进制数据可以存储在SQL Server,并通过一个网页应用程序进行查询。在本系列的下一篇文章中,我们将创建一个网页应用程序来把图像插入到SQL当中。另外,还会对本文中的例子进行扩展,包括将图片的文件名传递会应用程序,通过传递一个特定的图像名来检索,并对这些应用程序进行转换以使用存储过程和代码分离页面。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接