|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
一、什么是组件 组件是包含可以更改的数据形式的代码的对象,是可用代码的封装,这些代码可以用来执行应用程序的一些功能,如从数据库中检索某些信息等功能。现在常常听人说起COM,其使它的意思是组件对象模型(Component Object Model),是由微软开发的可以在Windows平台上执行的对象模型,COM定义了组件之间的交互能力。为COM编写的组件可以重复使用,并不依靠于编写所用的语言,比如说,一个组件可以用VB,VC++甚至是Java来编写,总之,只要遵守COM规范就可以了。 二、为什么我们要用VB来创建ASP组件 前面我也说了,编写组件对使用的语言没有什么限制,因此您就可以使用您所认识的语言来编写组件。我们说VB是用来编写组件最轻易的语言工具,它虽然没有 VC++和Java得优良的性能,和高速灵活性,但是因为它易学易用,所以也被广大程序开发人员是用来编写COM组件。下面我想介绍一下如何使用VB来创建ASP所用的COM组件。 三、问题的提出 某个商务网站,常常要对他们多提供的CD信息进行增加或删除等操作,因此它们像开发出一个DNA组件(Distributed interNet Architecture分布式Internet结构 ),从数据库中对CD信息进行操作。在此,我们想利用VB来实现创建这个组件的过程。 首先,我们需要知道CD信息在数据库中,例如SQL SERVER 7.0中的存储结构,如下: CD_ID: 为数据库中唯一标识这张CD的标识符。 CD_Name: 为CD名 CD_Author: 为演唱(奏)者 CD_Price: 为CD价格 CD_Information: 为CD的简朴描述 为了简朴起见,我们假设对CD信息数据的处理仅有增加和删除,有爱好的朋友想增加这个组件的功能请参看相应的书籍,自行完成。 就像在Java中写JavaBean程序相同,在ASP的组件中,我们也要定义相应的方式来实现一定的功能,本例中用到了下列方式: OpenDB: 打开数据库,读入所有的CD信息。 CloseDB: 关闭数据库连接。 Add: 向数据库中添加一条新的CD信息 Delete: 从数据库中删除一条CD信息。 NextCD: 从表中返回当前CD信息,并把指针移向下一条信息 IsEof: 判定是否还有更多的CD信息 四、使用VB创建组件 现在让我们开始用Visual Basic 6.0(当然使用VB5.0也是可以的 )创建一个新的ActiveX DLL项目(如图) 由于我们要操作数据库,要使用到ADO,因此我们要引用Microsoft Activex Data Object 2.5 Library.(如下图) 现在我们开始写组件中的方式 1、 OpenDB方式 OpenDB方式的思路是建立与MS SQL SERVER7.0的连接,这可以使用SQLOLEDB Provider来实现。建立连接后就可以创建一个包含所有CD信息的记录集。根据以上分析我们写出如下代码。 Option Explicit Private Conn As ADODB.Connection Private RecordSetCD As ADODB.Recordset ’打开连接和结果集 Private Sub OpenDB() Set Conn = New ADODB.Connection Set RecordSetCD = New ADODB.Recordset Conn.Open "Provider=SQLOLEDB;DataSource=MUSE;Initial Catalog=Music;UserId=Wayne;Password=AbCdEfG" RecordSetCD.Open "SELECT * FROM CD", Conn End Sub 2、 CloseDB方式 由于连接数据库是相称昂贵的,所以在不需要使用数据库时,一定要记住关闭Recordset 和Connection对象,CloseDB就是完成这一操作。 Private Sub CloseDB() ’关闭结果集RecordSetCD If Not (RecordSetCD Is Nothing) Then If RecordSetCD.State = adStateOpen Then RecordSetCD.Close End If Set RecordSetCD = Nothing End If ’关闭连接Conn If Not (Conn Is Nothing) Then Conn.Close Set Conn = Nothing End If End Sub 3、 Add方式 Add方式的目的是向数据库中添加一条新的CD信息,因此它打开的记录集要求能够更新。这就不能像OpenDB中那样仅用Open打开数据集。具体的代码见下面: Private Sub Add(Id As String, Name As String, Author As String, Price As Currency, Information As String) Dim NewConn As New ADODB.Connection Dim NewRecordsetCD As New ADODB.Recordset NewConn.Open "Provider=SQLOLEDB;DataSource=MUSE;Initial Catalog=Music;UserId=Wayne;Password=AbCdEfG" NewRecordsetCD.Open "SELECT * FROM CD", NewConn, adOpenDynamic, adLockOptimistic NewRecordsetCD.AddNew NewRecordsetCD.Fields("CD_ID") = Id NewRecordsetCD.Fields("CD_Name") = Name NewRecordsetCD.Fields("CD_Author") = Author NewRecordsetCD.Fields("CD_Price") = Price NewRecordsetCD.Fields("CD_Information") = Information NewRecordsetCD.Update End Sub 解释:使用 NewRecordsetCD.AddNew, NewRecordsetCD.Fields(“Some_Key”)=Some_Value NewRecordsetCD.Update 来添加一条纪录 4、 Delete方式: 这个方式的目的是为了删除库中的某条CD名和相关的信息。它的实现方式是通过查询表中唯一的CD_ID来定位CD信息,从而删除该行纪录 Private Sub Delete(Id As String) Dim NewConn As New ADODB.Connection Dim RecordsetDelete As New ADODB.Recordset NewConn.Open "Provider=SQLOLEDB;DataSource=MUSE;Initial Catalog=Music;UserId=Wayne;Password=AbCdEfG" 从表中删除一条信息 NewConn.Execute "DELETE FROM CD WHERE CD_ID =\\\'" & Id & "\\\'", adCmdText + adExecuteNoRecords End Sub 5、ASP程序的编写 (1) ListCdInformation.asp 程序 这个程序实现的是检索数据库,把检索的结果显示为一张表,使用了刚才我们定义的组件。它打开表,然后列举每一张CD的信息。 <% Dim Cd_Info Set Cd_Info= Server.CreateObject("CD.CD_Handle") %> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=gb2312"> <TITLE>CD信息列表</TITLE> </HEAD> <BODY> <B><P ALIGN="center">CD信息列表</P></B> <TABLE BORDER="2" CELLSPACING="1"> <TR> <TD><P ALIGN="center">CD编号</TD> <TD><P ALIGN="center">CD名</TD> <TD><P ALIGN="center">作者</TD> <TD><P ALIGN="center">价格</TD> <TD><P ALIGN="center">CD简介</TD> </TR> <TR></TR> <%DIM ID Dim Name Dim Author Dim Price Dim Information \\\'初始化CD列表 Cd_Info.OpenDB While Cd_Info.IsEof =False Cd_Info.NextCD ID,Name,Author,Price,Information %> <TR> <TD><%=ID%></TD> <TD><%=Name%></TD> <TD><%=Author%></TD> <TD><%=Price%></TD> <TD><%=Information%></TD> <TD><Form Name = "Delete" METHOD =\\\'POST\\\' ACTION ="DeleteCdInformation.asp?id=<%=ID%>"> <INPUT TYPE "SUBMIT" VALUES="删除此条" NAME="DELETE2"> </FORM> </TD> </TR> <% Wend %> </TABEL> <FORM NAME="ADD" METHOD ="POST" ACTION="AddCDInformation.asp"> <input type ="submit" value="添加一条CD信息" Name="ADD2"> </FORM> </body> </html> (2)DeleteCdInformation.asp程序 点击每条信息后的删除键就会从表中把该条信息删除,它也调用了我们刚刚注册的组件。限于篇幅,我只把最重要的几行代码写出: <% Dim CD_Info Set CD_Info =Server.CreateObject(“CD.CD_Handle”) CD_Info.Delete Request.QueryString(“ID”) %> (3)AddCDInformation.html 本程序是一个纯HTML文本,只出现一个表单,让你填写新的CD信息,然后再发给InsertintoDB.asp来加入数据库。 <html> <head> <meta http-equiv="Content-Language" content="zh-cn"> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>请您添加一条CD信息</title> </head> <body> <form method="POST" action="InsertintoDB.asp"> <p> </p> <p> 请您添加一条CD信息</p> <table border="1" cellspacing="1" width="34%" height="109"> <tr> <td width="24%" height="16"> <p align="center">CD号</td> <td width="76%" height="16"><input type="text" name="ID" size="24"></td> </tr> <tr> <td width="24%" height="16"> <p align="center">CD名</td> <td width="76%" height="16"><input type="text" name="Name" size="24"></td> </tr> <tr> <td width="24%" height="16"> <p align="center">作者</td> <td width="76%" height="16"><input type="text" name="Author" size="24"></td> </tr> <tr> <td width="24%" height="16"> <p align="center">价格</td> <td width="76%" height="16"><input type="text" name="Price" size="24"></td> </tr> <tr> <td width="24%" height="95"> <p align="center">简介</p> <p> </td> <td width="76%" height="95" valign="top"><textarea rows="4" name="Information" cols="22"></textarea></td> </tr> <tr> <td width="100%" height="15" colspan="2"> <p align="center"><input type="submit" value="提交" name="B1"><input type="reset" value="取消" name="B2"></td> </tr> </table> </form> <p> </p> </body> </html> (4)InsertIntoDB.asp程序,用到了组件中Add方式 <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY> <%DIM Insert_CD set Insert_CD =Server.CreateObject("CD.CD_Handle") Insert_CD.Add request.form("ID"),request.form ("Name"),request.form("Author"),request.form("Price"),request.form("Information") %> <p>您已成功的加入一条书目</p> <form name="A" Method="POST" Action="ListCdInformation.asp"> <input type="SUBMIT" Value="返回" name="B1"> </form> </body> </html> 6、总结 上面我简要的介绍了组件的定义以及使用VB来编写ASP中组件的方式,其实上面所举的例子只是很粗浅的例子,相信大家写出的程序一定会比我的更好,我想假如有机会的话,我还会谢谢如何使用VC++和Java来编写COM组件,因为我觉得,假如你没有把握COM组件,你也就没有把握ASP的精髓。 返回类别: 教程 上一教程: ASP编程入门进阶(七):内置对象SERVER 下一教程: 在ASP 中使用 SQL_DMO 给表添加索引 您可以阅读与"手把手教你使用VB来创建ASP组件"相关的教程: · 手把手教你使用VB来创建ASP组件(4) · 手把手教你使用VB来创建ASP组件(7) · 手把手教你使用VB来创建ASP组件(6) · 手把手教你使用VB来创建ASP组件(6) · 手把手教你使用VB来创建ASP组件(1) |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |