手把手教你使用VB來建立ASP組件

來源:互聯網
上載者:User
建立    一、什麼是組件

  組件是包含可以更改的資料形式的代碼的對象,是可用代碼的封裝,這些代碼可以用來執行應用程式的一些功能,如從資料庫中檢索某些資訊等功能。現在經常聽人說起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的精髓。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.