一、什么是组件
组件是包含可以更改的数据形式的代码的对象,是可用代码的封装,这些代码可以用来执行应用程序的一些功能,如从数据库中检索某些信息等功能。现在经常听人说起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项目(如图)<BR><BR><IMG height=407 src="http://jc.upschool.cn/upload/2006-12-20/20061220964232094.jpg" width=512><BR><BR>然后,把项目名改为CD,把类模块名改为CD_Handle,见下图 <BR><BR><IMG height=384 src="http://jc.upschool.cn/upload/2006-12-20/20061220964225251.jpg" width=512>
由于我们要操作数据库,要使用到ADO,因此我们要引用Microsoft Activex Data Object 2.5 Library.(如下图)<BR><BR><IMG height=384 src="http://jc.upschool.cn/upload/2006-12-20/20061220964277964.jpg" width=512> <BR>现在我们开始写组件中的方法<BR><BR><B><I>1、 OpenDB方法</I></B><BR><BR> OpenDB方法的思路是建立与MS SQL SERVER7.0的连接,这可以使用SQLOLEDB Provider来实现。建立连接后就可以创建一个包含所有CD信息的记录集。根据以上分析我们写出如下代码。<BR><BR>Option Explicit<BR><BR>Private Conn As ADODB.Connection<BR><BR>Private RecordSetCD As ADODB.Recordset<BR><BR>’打开连接和结果集<BR><BR>Private Sub OpenDB()<BR><BR>Set Conn = New ADODB.Connection<BR><BR>Set RecordSetCD = New ADODB.Recordset<BR><BR>Conn.Open "Provider=SQLOLEDB;DataSource=MUSE;Initial Catalog=Music;UserId=Wayne;Password=AbCdEfG"<BR><BR>RecordSetCD.Open "SELECT * FROM CD", Conn<BR><BR>End Sub<BR><BR><B><I>2、 CloseDB方法</I></B><BR><BR> 由于连接数据库是相当昂贵的,所以在不需要使用数据库时,一定要记住关闭Recordset 和Connection对象,CloseDB就是完成这一操作。<BR><BR>Private Sub CloseDB()<BR><BR>’关闭结果集RecordSetCD<BR><BR>If Not (RecordSetCD Is Nothing) Then<BR><BR>If RecordSetCD.State = adStateOpen Then<BR><BR>RecordSetCD.Close<BR><BR>End If<BR><BR>Set RecordSetCD = Nothing<BR><BR>End If<BR><BR>’关闭连接Conn<BR><BR>If Not (Conn Is Nothing) Then<BR><BR>Conn.Close<BR><BR>Set Conn = Nothing<BR><BR>End If<BR><BR>End Sub<BR>
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
手把手教你使用VB来创建ASP组件
2001-04-14· Wayne ·yesky
--------------------------------------------------------------------------------
7上一页1 2 3 4 5 6 7下一页8
5、 IsEof方法
IsEof方法是用来判断是否还有更多的信息
其代码如下
Private Function IsEof() As Boolean
IsEof = RecordSetCD.EOF
End Function
6、 NextCD 方法
NextCD方法的目的是返回当前的CD信息,并将记录集的指针向下移动,这可以通过MoveNext方法和IsEof配合使用来实现
Private Sub NextCD(Id As Variant, Name As Variant, Author As Variant, Price As Variant, Information As Variant)
On Error Resume Next
If IsEof = True Then
Err.Raise vbObject + 1, "CD Information", "End of cursor"
Exit Sub
End If
Id = RecordSetCD.Fields("CD_ID")
Name = RecordSetCD.Fields("CD_Name")
Author = RecordSetCD.Fields("CD_Author")
Price = RecordSetCD.Fields("CD_Price")
Information = RecordSetCD.Fields("CD_Information")
RecordSetCD.MoveNext
End Sub
好,我们已经编写好了组件,把它们编译成CD.dll后,你最好把他们注册一下 方法是在DOS界面下,输入regsvr32 CD.dll
document.getElementById('loading').style.display="none";