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

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

 2008-04-14 09:54:28 来源:WEB开发网   
核心提示: INSERT INTO BLOBTest(BLOBName, BLOBData)SELECT 'First test file',BulkColumn FROM OPENROWSET(Bulk 'D:est.jpg', SINGLE_BLOB) AS BLO

INSERT INTO BLOBTest
(BLOBName, BLOBData)
SELECT 'First test file',
 BulkColumn FROM OPENROWSET(
 Bulk 'D:  est.jpg', SINGLE_BLOB) AS BLOB

这里用“D:  est.jpg”代入作为文件的文件系统路径。OPENROWSET语句允许SQL从外部数据源提供程序来存取数据。Bulk是特别为OPENROWSET插入文件和图像而设计的数据源提供程序。想了解详细的信息,可以查阅SQL Server的联机丛书。执行选择表的操作将产生如下显示的一条记录:

  SELECT*
  FROMBLOBTest

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

SELECT语句会核实数据是否已经插入,不过这还不是在SQL中查看该图片的方法。为了查看图片,我们需要创建一个小的Visual Studio应用程序。

二进制数据读取

本例将从SQL读取已存储的图像,并利用Visual Studio在网页上展示图像。创建一个没有代码分离的新页面。代码分离的例子稍后再做介绍。

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%
  string sConn = @"server=.; database=Test; Integrated Security=True";
  SqlConnection objConn = new SqlConnection(sConn);
  objConn.Open();
  string sTSQL = "SELECT BLOBData FROM BLOBTest";
  SqlCommand objCmd = new SqlCommand(sTSQL, objConn);
  objCmd.CommandType = CommandType.Text;
  SqlDataReader dr = objCmd.ExecuteReader();
  dr.Read();
  Response.BinaryWrite((byte[])dr["BLOBData"]);
  objConn.Close();
%>
  <!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>
  </div>
  </form>
</body>
</html>

该网页将使用sConn变量来查找数据库。“Integatred Security = True”将指定使用的Windows安全机制。Server名称应当是您的服务器名,如果SQL server和网页服务器再同一台本地机上,就可以使用点来代替。SQL语句只是获取图像,不过在后面的例子中,我们还要查询文件名,并构建一个更真实化的应用程序。指令类型设置为“test”的意思是传递一条SQL语句(相对于存储过程的名称)。

Tags:SQL Server 存储

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