WEB开发网
开发学院数据库MSSQL Server SQL Server:存储图像和BLOB文件(二) 阅读

SQL Server:存储图像和BLOB文件(二)

 2008-04-14 09:54:28 来源:WEB开发网   
核心提示: 下面要用的语句:SqlCommand objCmd = new SqlCommand(sTSQL, objConn);创建一个将SQL语句和连接绑定在一起的指令对象,然后在以下的语句中执行该指令对象:SqlDataReader dr = objCmd.ExecuteReader();此语句

下面要用的语句:

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:存储图像和BLOB文件(二)

在我们例子里的数据库中,在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当中。另外,还会对本文中的例子进行扩展,包括将图片的文件名传递会应用程序,通过传递一个特定的图像名来检索,并对这些应用程序进行转换以使用存储过程和代码分离页面。

上一页  1 2 3 

Tags:SQL Server 存储

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接