用VB和MTS開發多層數據庫應用系統

用VB和MTS開發多層數據庫應用系統
(作者:於華 2001年03月14日 11:30)

  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文件,再安裝客戶端程序即可運行。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章