科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用SQL Server为Web浏览器提供图像(4)

用SQL Server为Web浏览器提供图像(4)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

微软SQL Server数据库服务器能够在SQL数据库里保存图片和大量的文本。图片和文本使用的数据类型分别是image图片类型和text文本类型。

作者:赛迪网技术社区 来源:赛迪网技术社区 2007年9月3日

关键字: 图像 SQL Server SQL Server 各版本 数据库

  • 评论
  • 分享微博
  • 分享邮件
单击新建(New)按钮,在列出的可用数据驱动程序列表里,选择SQL Server,然后单击下一步(Next)。接着,在输入框里输入 Grocevb 作为DSN。接下来的几步很容易完成,不再详述。 PS$DG[#~A  
MziWZFf  
下面,出现了SQL Server 登录对话框。输入服务器名称,登录ID和口令,并单击选项(Option)按钮。从列出的可用数据库列表里,选择Grocevb,单击确定(OK)。在结束了全部以上步骤之后,就返回到了选择数据源对话框。在这里,从DSN列表里单击文件名 Grocevb.dsn,然后完成后面几步结束这段操作。 P/,>p0+B  
"p?f$BH|  
现在,可以双击Global.asa,查看以上步骤在这个文件里生成的代码。代码定义了连接SQL Server数据库所必需的一些变量。 TW(UI`O!  
W?Mfcr~ p  
为了初始化类 clsImageLoader ,必须在Global.asp的开始放两行代码。我们在列表 C里列出了Global.asa里的代码。注意clsImageLoader 是一个会话范围内的对象。 Co10 bbX  
B ,l`5fc^H  
列表 C: Global.asa +P `V%Oe,L  
i%"j/RdSF  
<OBJECT RUNAT=Server SCOPE=Session ID=objImageLoader PROGID="ImageLoader.clsImageLoader"> _<- xXc  
</OBJECT> Jt {t]C_g  
<SCRIPT LANGUAGE=VBScript RUNAT=Server> J> oM wBS  
Sub Session_OnStart TSc@6">  
  Session("Grocevb_ConnectionString") = "DRIVER=SQL Server; SERVER=(local); au] iY+  
          UID=sa;PWD=;APP=Microsoft (R) Developer Studio;WSID=JIA; nQ/ `\$uc3  
          DATABASE=Grocevb;UseProcForPrepare=0" Hs"95*T)  
  Session("Grocevb_ConnectionTimeout") = 15 ?,kJ31=:+  
  Session("Grocevb_CommandTimeout") = 30 cMt "w  
  Session("Grocevb_RuntimeUserName") = "sa" bE,Sk4sx  
  Session("Grocevb_RuntimePassword") = "" ByB+-!kH  
End Sub iEh`N}v:s>  
/v%W,w Gc  
Sub Session_OnEnd C,ftIac3  
set objImageLoader = Nothing b4 3qim{9  
End Sub Ja^i{0>KP  
m# I'7r2  
</SCRIPT> x.{JoI7^i  
R. qM W  
f@nc*N#k  
{)[1~ c%S  
.` h $5  
建立ASP页面 $' uZiH  
Fn*b  
为了连接到数据库,并和ImageLoader这个动态链接库通信,我们在Web项目里建立了一个ASP文件。方法是在文件(File)菜单里选择新建(New)菜单项,在文件(Files)标签卡中选择ASP页面图标,在输入框里输入文件名称。我们把这个页面命名为default.asp。在default.asp 里包含的代码如列表 D所示。 iXK;Tk  
i!d %#'j  
列表 D: default.asp wKx0]Z[ ?  
<+Nq<~227S  
<% Set dbConn = Server.CreateObject("ADODB.Connection") i svRy|O  
  dbConn.ConnectionTimeout = Session("Grocevb_ConnectionTimeout") U7cY3AW  
  dbConn.CommandTimeout = Session("Grocevb_CommandTimeout") GP }iJ{!V  
  dbConn.Open Session("Grocevb_ConnectionString"), Session("Grocevb_RuntimeUserName"), _ NPXDKF;H  
                                  Session("Grocevb_RuntimePassword") Up~9 #q~*  
/})Gb !\  
  Set cmdTemp = Server.CreateObject("ADODB.Command") AAnybl ,;  
  Set rstProduct = Server.CreateObject("ADODB.Recordset") WxIhh1t30  
    cmdTemp.CommandText = "SELECT prod_id, prod_name, prod_desc, prod_unitprice, & _ kP!OZ&rtg\  
                    " prod_unitquant, prod_imagetype " & _ /n2~A  
                    "FROM Products ORDER BY prod_name" nheRBLg@=  
    cmdTemp.CommandType = 1 T=PSVY!2"  
    Set cmdTemp.ActiveConnection = dbConn -{6'in}  
    rstProduct.Open cmdTemp, , 0, 1 N'.ho 4@y  
B+t^i(i  
    objImageLoader.DbName = "Grocevb" ];p6gZ  
    objImageLoader.TableName = "Products" :Rp;Wl6[  
    objImageLoader.NameOfImageColumn = "prod_image" 72Vh[pD  
    objImageLoader.NameOfImageTypeColumn = "prod_imagetype" Yl0dE35&O  
    objImageLoader.NameOfImageIdColumn = "prod_id" T l19@r  
    objImageLoader.OpenConnection -}OLl  
%> vF'ApX$  
xD* IXvU  
<HTML> Jo9vX&0B  
<HEAD> yZf(%. 8U|  
<TITLE>从SQL Server装载图片的示例</TITLE> 5}|(^  
</HEAD> =aTb7pCX  
<BODY bgcolor="#FFFFFF" TOPMARGIN=8 LEFTMARGIN=4> fs!N1&V9w"  
<%Do While Not rstProduct.EOF %> !NeR ?KT  
<%ProdId = rstProduct("prod_id") %> mB@  .R&  
<% objImageLoader.CreateTempImageFile(ProdId) %> V:09 ebe  
<% FileName = "images/" & objImageLoader.ImageFile(ProdId) %> 3]kM{f  
+Bt0OSg?  
<TABLE border=1 cellpadding=0 cellspacing=0 width=100%> 9n6=/3<jd  
  <TABLE border=0 cellpadding=5 cellspacing=0 width=100% cols=2> alx\Ye  
    <td width=30%> SQ?qnh@uh  
      <IMG ALIGN=BOTTOM SRC= <% =FileName %>> .FRO|}}  
      <p> </p> Ch:2V\`T  
    <font size=2>Image type: <% = rstProduct("prod_imagetype") %> [8c]|CW  
    </td> 4a^bUx6X_  
    <td width=70%> O1 xR+  
      <p align=center><font size=4><% =rstProduct("prod_name") %></font></p> /e3k @rn  
      <p align=center><% =rstProduct("prod_desc") %></p> X[ /;Z&r'  
    </td> bYiJ {,  
  </TABLE> UD 7/|J9  
  <p> </p> #:m[*ScMQ  
<TABLE border=0 cellpadding=5, cellspacing=0 width=100% cols=2> (zHI`'5%6  
    <td width=50%> L$vKrF+  
      <p align=left>Unit quantity: <% = rstProduct("prod_unitquant") %></P> l>Kb+~+lz  
    </td> 46i&I6/  
    <td width=50%> um34<e9  
      <p align=left>Unit price: <% =rstProduct("prod_unitprice") %></p> 1'mq(Rr(b  
    </td>                   xKd(5 ,  
  </TABLE> !'1P&K%  
</TABLE> LO'm_8J#k  
<p> </p> MD?^!?  
<% rstProduct.MoveNext %> s-M $EOn(  
<% Loop %> j`P80dy'  
</BODY> (7V<=*  
</HTML> 3:eApv[  
+T'Odlc[+S  
u DbK1J-J  
注意:类ImageLoader 里定义的CreateTempImageFile 方法和ImageFile 属性(只读)需要图片ID作为参数。在这个例子里,图片ID就是表Products的主关键字(prod_id) 。所以, prod_id 的值必须传递给动态链接库。 BQS0[o*D  
 UbV6>i=;  
LoPbW"Vx  
总结 n\L%YI  
wJL{ztSy[#  
在这篇文章里,我们演示了一个方法,使用ActiveX动态链接库和ASP,可以从微软SQL Server服务器把图片装载到Web浏览器。它已经表明,这个方法在快速开发、容易使用和自定义Web页面的灵活上都有优势。动态链接库被用来连接数据库,提取图片数据,把图片数据放入文件。ASP页面则负责与SQL数据库和动态链接库通信。我们已经介绍了设置SQL数据库和Web项目的操作过程。 X#L7uP9h  
4y!Of@s%  
虽然这篇文章里的动态链接库和数据库的功能做了简化,但这里介绍的步骤对于其它任何强大复杂的Web项目都是有效的。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章