首页 | 免费域名 | 个人服务器 | 一流信息监控拦截系统 | 虚拟主机知识库 | ASP 空间 | ASP技术大全 | 下载中心 | 客户服务中心
  7i24 > ASP技术大全 > ASP与数据库 >
    7i24 .Com  
  基于ASP/ADO技术的多媒体数据输出控制

7i24.Com不停为您服务

基于ASP/ADO技术的多媒体数据输出控制
2001:8:10 


作者:曹新社

  ActiveX Data Oject(简称ADO)技术与Active Server Pages(简称ASP)结合使用,可以具备存取数据库的功能。在实际应用中,我们可以使用VBScript或JavaScript语言来控制结果集的输出,而当对Web上的多媒体数据进行检索时,如何对结果集的输出进行控制呢?下面笔者就此进行论述。

  ■多媒体数据的存储
  我们通常用支持ODBC的数据库(如Access、SQL Server、Visual Foxpro等)来存储多媒体数据。在数据库中,我们不直接将多媒体数据(如.GIF文件、.AVI文件、.WAV文件、.MP3文件等)存储在某个字段中,而是把多媒体数据的URL信息存储在某个字符字段中。本文的示例中,数据库MMDB的Video_T表包含mm_Tittle和mm_URL两个字符字段,分别存储多媒体数据的主题与URL信息。

  ■多媒体数据的输出控制
  为了使输出界面友好,关键是产生一个可前后滚动的RecordSet对象,并予以分页。实现步骤如下:

  1. 产生一个可前后滚动的RecordSet对象

  根据实际应用的需要,我们可以选用动态光标(Dynamic Cursor)模式、键盘光标(Keyset Cursor)模式、静态光标(Static Cursor)模式和前滚光标(Forward_only Cursor)模式打开RecordSet对象。若要移动当前记录的位置,可使用MoveFirst、MoveLast、MoveNext、MovePrevious与Move等方法以及AbsolutePosition、AbsolutePage和Filter属性。而前滚的RecordSet对象仅支持MoveNext方法。当不具体指定光标模式时,ASP/ADO就预设为前滚光标模式。因此,我们需要指定打开RecordSet的光标模式为键盘光标模式,实现代码如下:

  〈%

  Const adOpenKeyset=1

  '置CursorType为键盘光标模式

  Const adLockReadOnly=1

  '置LockType为只读

  Set Conn=Server.CreateObject("ADODB.Connection")

  Set RS=Server.CreateObject("ADODB.RecordSet")

  Conn.Open "MMDEMODB",""

  RS.OPEN "Select  From t_vedio",Conn,adOpenKeyset,adLockReadOnly

  %

  2. 实现分页

  RecordSet对象的下列属性、方法与分页有关,其中:

  PageSize:设定RecordSet对象“一页”的记录数;

  AbsolutePage:设定当前记录的位置是位于哪一页;

  PageCount:显示RecordSet对象包含多少“页”数据;

  NextRecordSet:清除当前的RecordSet对象,并运行下一个命令以传回下一个RecordSet对象。

  实现分页的代码如下:

  〈% While Not(RS is Nothing) %

  已检索到 〈%=RS.RecordCount%

   条记录 (共 〈%=RS.PageCount%

   页)〈br

  〈%

  RowCount=RS.PageSize

  While Not RS.EOF and RowCount

  0

  %

  第 〈%=PAGENO%

   页 (主题:〈%Response.write RS("mm_title")%

   )〈br

  ……显示多媒体数据……

  〈%

  RowCount=RowCount-1

  RS.MoveNext

  Wend

  SET RS=RS.NextRecordSet

  Wend

  %

  其中显示多媒体数据时可以使用〈IMG ……

  或〈EMBED……

  等命令。

  ■一个完整的示例
  数据库mmDemoDB的表Vedio_T的每条记录都包含一个视频文件,根据主题进行检索。检索结果每屏显示一个,用户可通过点击屏幕上的视频播放器进行观看。源代码如下:

  〈HTML

  〈BODY

  〈%

  Const adOpenKeyset=1

  Const adLockReadOnly=1

  Set Conn=Server.CreateObject("ADODB.Connection")

  Set RS=Server.CreateObject("ADODB.RecordSet")

  Conn.Open "MMDEMODB",""

  RS.OPEN "Select  From t_vedio",Conn,adOpenKeyset,adLockReadOnly

  RS.PageSize=1

  Name_B=REQUEST("Name_B")

  IF Name_B〈

  "" THEN

   PAGENO=MID(Name_B,9)

   IF PAGENO〈1 THEN

   PAGENO=1

   END IF

  ELSE

   PAGENO=1

  END IF

  RS.ABSOLUTEPAGE=PAGENO

  %

  〈P

  〈FORM Method=POST ACTION="MOVDEMO.ASP"

  〈% While Not(RS is Nothing) %

  已检索到 〈%=RS.RecordCount%

   条记录 (共 〈%=RS.PageCount%

   页)〈br

  〈%

  RowCount=RS.PageSize

  While Not RS.EOF and RowCount

  0

  %

  第 〈%=PAGENO%

   页 (主题:〈%Response.write RS("mm_title")%

   )〈br

  〈%RTEM=RS("mm_URL")%

  〈IMG DYNSRC=〈%=RTEM%

   WIDTH=320 HEIGHT=240 START=1 CONTROLS

  〈br

  〈%

  RowCount=RowCount-1

  RS.MoveNext

  Wend

  %

  〈P

  〈%

  SET RS=RS.NextRecordSet

  Wend

  Conn.Close

  Set RS=Nothing

  Set Conn=Nothing

  %

  〈%IF PAGENO

  1 THEN%

  〈INPUT TYPE="SUBMIT" NAME="Name_B" VALUE="〈%="〈〈_NO."&&PAGENO-1%

  "

  〈% END IF%

  〈%IF RowCount=0 THEN%

  〈INPUT TYPE="SUBMIT" NAME="Name_B" VALUE="〈%="

  _NO."&&PAGENO+1%

  "

  〈%END IF%

  〈/FORM

  〈/BODY

  〈/HTML

  通过以上程序,我们就可以基本实现在ASP中对多媒体数据进行输出的控制。





  2002年1月8日  阅读 625 次  发送此页给朋友  来源:    版权争议  删除

相关文章:   近期热点:

上一篇: 在ASP中用“正则表达式对象”来校验数据的合法性
下一篇: 将IP表存入SQL里的程序
返回上一层...
搜索:

(C)2004-2022 7i24.Com 保留所有权利