用VB與MTS開發多層數據庫應用系統
發表時間:2024-02-22 來源:明輝站整理相關軟件相關文章人氣:
[摘要]王莉梅 MTS(Microsoft Transaction Server)是微軟為其Windows NT操作系統推出的一個中間件產品,由于它具有強大的分布事務支持、安全管理、資源管理和多線程并發控制等特性,使其成為在Windows平臺上開發大型數據庫應用系統的首選產品。 由于MTS屏蔽了底...
王莉梅
MTS(Microsoft Transaction Server)是微軟為其Windows NT操作系統推出的一個中間件產品,由于它具有強大的分布事務支持、安全管理、資源管理和多線程并發控制等特性,使其成為在Windows平臺上開發大型數據庫應用系統的首選產品。
由于MTS屏蔽了底層實現的復雜性,極大地簡化了這類應用的開發,程序員可以將精力集中在業務邏輯上,因而有效地提高了軟件的開發效率。本文將通過實例介紹用VB和MTS開發多層數據庫應用系統的方法和步驟。
基于MTS開發多層數據庫應用系統的步驟是:第一步,開發MTS組件提供服務,程序員可以用任何一種支持COM的語言編寫MTS組件,如VB、VC、Delphi和COBOL等;第二步,分發MTS組件到MTS軟件包中,并且把MTS軟件包安裝到MTS環境之中;第三步,編寫客戶端程序調用執行在MTS環境之中的MTS組件,以取得服務。詳細開發過程如下:
1. 創建MTS組件
本例中我們將編寫一個MTS組件,運行于中間層的應用服務器上,由它建立與數據庫服務器的連接,完成對某課程的授課教師信息的查詢。
啟動Visual Basic,新建一ActiveX DLL項目。選擇工程選單,在引用窗口中選中Microsoft ActiveX Object Library 和Microsoft Transaction Sever Type Library。按“確定”將這兩項加到項目中。
從工程選單中選擇工程屬性,在通用選項中將項目名稱改為MtsDemo。線程模塊選擇分部線程DLL,將類模塊名稱改為Course,將下列程序加入類模塊的通用聲明中:
Option Explicit
Public Function ListCourses( ByVal mcourse as String) As ADODB.Recordset
On Error GoTo ErrorHandle
Dim strSQL As String
Dim objContext As.ObjectContext
Set objContext = GetObjectContext()
' 建立事務性組件
Dim objADOConn As ADODB.Connection
' 利用ADO訪問數據庫
Dim objRS As ADODB.Recordset
Set objADOConn = New ADODB.Connection
With objADOConn
.connectiontimeout=10
.connectionstring="Provider=SQLOLEDB.1;UserID=sa;Initial Catalog=DBcourse"
' 通過OLEDB建立與數據庫的連接
.Open
End with
Set ObjRS = New ADODB.Recordset
StrSQL="SELECT
Teacher.name,Teacher.sex,Techer.age,Teacher.edu_level,Teacher.tiltle"
strSQL=strSQL&&" From Teacher,TeacherCourse,Courses "
strSQL=strSQL&& "Where Teacher.teacher_NO=TeacherCourse.teacher_no
and TeacherCourse.course_no=Courses.course_no
and Courses.course like'" && mCourse && "'"
'“like”關鍵字可實現模糊查詢
ObjRS.Open strSQL, ObjADOConn
' 進行數據庫查詢
Set ListCourses = ObjRS
ObjContext.SetComplte
' 若事務成功完成,則提交該事務
objADOConn.Close
Set objADOConn = Nothing
Set objRS=Nothing
strSQL = ""
'關閉數據庫連接,釋放所有對象
Exit Function
ErrorHandle:
ObjContext. SetAbort
Set ListCourses=Nothing
' 若事務失敗,則回滾事務
End Function
2. 注冊MTS組件
所有運行于服務器端的ActiveX DLL都應在MTS中注冊,這是通過Transaction Server Explorer完成的。其過程如下:
(1)創建軟件包
軟件包是在同一進程中運行的組件集合,不同軟件包中的組件以進程隔離的方式運行在隔離的進程中。在創建軟件包時,開發者應盡量把共享資源的組件分配在同一軟件包內;考慮到軟件包中各個組件所共享的資源類型,可以把那些共享“昂貴”資源(如對某個特定數據庫的連接)的組件編為一組。
(2)向軟件包添加組件
在想安裝組件的包中選擇Component文件夾,單擊Install New Component(s) 按鈕,當提示添加文件時找到新生成的MtsDemo.dll文件將其加入。
3. 編寫客戶端程序
創建一個標準EXE項目。選擇工程選單,接著選擇引用,在引用窗口中選中剛才創建的MtsDemo,加入到項目中。
向窗體中添加如下內容:
名稱 標題
標簽 label1 請輸入課程名:
文本框 txtcourse
命令按扭 cmdok 查詢
數據網格 dgresult
再將下列程序加入通用聲明中:
Private Sub cmdOK_Click()
Dim rsResult As ADODB.Recordset
Dim objMts As Object
Dim mCourse As String
mCourse = Trim(txtCourse.Text)
Set objMts = CreateObject(mtsDemo.Course)
Set rsResult = objCourse.ListCourses(mCourse)
If rsResult.EOF Then
MsgBox ("無滿足條件的記錄!")
Exit Sub
End If
Set dgResult.DataSource = rsResult
Dgresult.Columns(0).Caption = "姓名"
Dgresult.Columns(1).Caption = "性別"
DgResult.Columns(2).Caption = "年齡"
Dgresult.Columns(3).Caption = "學歷"
DgResult.Columns(4).Caption = "職稱"
DgResult.Refresh
Set objMts = Nothing
End Sub
4. 運行客戶端
首先將編寫好的客戶端程序進行編譯發布,然后在Microsoft Management Console中找到新的軟件包,擊右鍵選擇導出,將它導出到c:\Program File\Packages中,在該文件夾的Client下自動生成了MtsDemo的客戶端安裝程序。在客戶機上運行Client文件夾下的Setup.exe文件,再安裝客戶端程序即可運行。