基于ASP/ADO技术的多媒体数据输出控制(转)

本文介绍了在ASP中对多媒体数据的存储与输出控制。存储时,用支持ODBC的数据库,将多媒体数据的URL信息存于字符字段。输出控制方面,先产生可前后滚动的RecordSet对象,指定光标模式为键盘光标模式,再通过相关属性和方法实现分页,最后给出完整示例。
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中对多媒体数据进行输出的控制。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-124408/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10294527/viewspace-124408/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值