明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線(xiàn)學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

用VB與MTS開(kāi)發(fā)多層數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)

[摘要]王莉梅   MTS(Microsoft Transaction Server)是微軟為其Windows NT操作系統(tǒng)推出的一個(gè)中間件產(chǎn)品,由于它具有強(qiáng)大的分布事務(wù)支持、安全管理、資源管理和多線(xiàn)程并發(fā)控制等特性,使其成為在Windows平臺(tái)上開(kāi)發(fā)大型數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的首選產(chǎn)品。   由于MTS屏蔽了底...
王莉梅

  MTS(Microsoft Transaction Server)是微軟為其Windows NT操作系統(tǒng)推出的一個(gè)中間件產(chǎn)品,由于它具有強(qiáng)大的分布事務(wù)支持、安全管理、資源管理和多線(xiàn)程并發(fā)控制等特性,使其成為在Windows平臺(tái)上開(kāi)發(fā)大型數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的首選產(chǎn)品。

  由于MTS屏蔽了底層實(shí)現(xiàn)的復(fù)雜性,極大地簡(jiǎn)化了這類(lèi)應(yīng)用的開(kāi)發(fā),程序員可以將精力集中在業(yè)務(wù)邏輯上,因而有效地提高了軟件的開(kāi)發(fā)效率。本文將通過(guò)實(shí)例介紹用VB和MTS開(kāi)發(fā)多層數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的方法和步驟。

  基于MTS開(kāi)發(fā)多層數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的步驟是:第一步,開(kāi)發(fā)MTS組件提供服務(wù),程序員可以用任何一種支持COM的語(yǔ)言編寫(xiě)MTS組件,如VB、VC、Delphi和COBOL等;第二步,分發(fā)MTS組件到MTS軟件包中,并且把MTS軟件包安裝到MTS環(huán)境之中;第三步,編寫(xiě)客戶(hù)端程序調(diào)用執(zhí)行在MTS環(huán)境之中的MTS組件,以取得服務(wù)。詳細(xì)開(kāi)發(fā)過(guò)程如下:

  1. 創(chuàng)建MTS組件
  本例中我們將編寫(xiě)一個(gè)MTS組件,運(yùn)行于中間層的應(yīng)用服務(wù)器上,由它建立與數(shù)據(jù)庫(kù)服務(wù)器的連接,完成對(duì)某課程的授課教師信息的查詢(xún)。

  啟動(dòng)Visual Basic,新建一ActiveX DLL項(xiàng)目。選擇工程選單,在引用窗口中選中Microsoft ActiveX Object Library 和Microsoft Transaction Sever Type Library。按“確定”將這兩項(xiàng)加到項(xiàng)目中。

  從工程選單中選擇工程屬性,在通用選項(xiàng)中將項(xiàng)目名稱(chēng)改為MtsDemo。線(xiàn)程模塊選擇分部線(xiàn)程DLL,將類(lèi)模塊名稱(chēng)改為Course,將下列程序加入類(lèi)模塊的通用聲明中:

  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()

   ' 建立事務(wù)性組件

   Dim objADOConn As ADODB.Connection

   ' 利用ADO訪問(wèn)數(shù)據(jù)庫(kù)

   Dim objRS As ADODB.Recordset

   Set objADOConn = New ADODB.Connection

   With objADOConn

   .connectiontimeout=10

   .connectionstring="Provider=SQLOLEDB.1;UserID=sa;Initial Catalog=DBcourse"

  ' 通過(guò)OLEDB建立與數(shù)據(jù)庫(kù)的連接

   .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 && "'"

  '“l(fā)ike”關(guān)鍵字可實(shí)現(xiàn)模糊查詢(xún)

   ObjRS.Open strSQL, ObjADOConn

   ' 進(jìn)行數(shù)據(jù)庫(kù)查詢(xún)

   Set ListCourses = ObjRS

   ObjContext.SetComplte

   ' 若事務(wù)成功完成,則提交該事務(wù)

   objADOConn.Close

   Set objADOConn = Nothing

   Set objRS=Nothing

   strSQL = ""

   '關(guān)閉數(shù)據(jù)庫(kù)連接,釋放所有對(duì)象

   Exit Function

  ErrorHandle:

  ObjContext. SetAbort

  Set ListCourses=Nothing

   ' 若事務(wù)失敗,則回滾事務(wù)

  End Function

  2. 注冊(cè)MTS組件
  所有運(yùn)行于服務(wù)器端的ActiveX DLL都應(yīng)在MTS中注冊(cè),這是通過(guò)Transaction Server Explorer完成的。其過(guò)程如下:

  (1)創(chuàng)建軟件包

  軟件包是在同一進(jìn)程中運(yùn)行的組件集合,不同軟件包中的組件以進(jìn)程隔離的方式運(yùn)行在隔離的進(jìn)程中。在創(chuàng)建軟件包時(shí),開(kāi)發(fā)者應(yīng)盡量把共享資源的組件分配在同一軟件包內(nèi);考慮到軟件包中各個(gè)組件所共享的資源類(lèi)型,可以把那些共享“昂貴”資源(如對(duì)某個(gè)特定數(shù)據(jù)庫(kù)的連接)的組件編為一組。

  (2)向軟件包添加組件

  在想安裝組件的包中選擇Component文件夾,單擊Install New Component(s) 按鈕,當(dāng)提示添加文件時(shí)找到新生成的MtsDemo.dll文件將其加入。

  3. 編寫(xiě)客戶(hù)端程序
  創(chuàng)建一個(gè)標(biāo)準(zhǔn)EXE項(xiàng)目。選擇工程選單,接著選擇引用,在引用窗口中選中剛才創(chuàng)建的MtsDemo,加入到項(xiàng)目中。

  向窗體中添加如下內(nèi)容:

        名稱(chēng)     標(biāo)題

  標(biāo)簽     label1   請(qǐng)輸入課程名:

  文本框   txtcourse  

  命令按扭   cmdok    查詢(xún)

  數(shù)據(jù)網(wǎng)格   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 ("無(wú)滿(mǎn)足條件的記錄!")

   Exit Sub

   End If

   Set dgResult.DataSource = rsResult

   Dgresult.Columns(0).Caption = "姓名"

   Dgresult.Columns(1).Caption = "性別"

   DgResult.Columns(2).Caption = "年齡"

   Dgresult.Columns(3).Caption = "學(xué)歷"

   DgResult.Columns(4).Caption = "職稱(chēng)"

   DgResult.Refresh

   Set objMts = Nothing

  End Sub

  4. 運(yùn)行客戶(hù)端
  首先將編寫(xiě)好的客戶(hù)端程序進(jìn)行編譯發(fā)布,然后在Microsoft Management Console中找到新的軟件包,擊右鍵選擇導(dǎo)出,將它導(dǎo)出到c:\Program File\Packages中,在該文件夾的Client下自動(dòng)生成了MtsDemo的客戶(hù)端安裝程序。在客戶(hù)機(jī)上運(yùn)行Client文件夾下的Setup.exe文件,再安裝客戶(hù)端程序即可運(yùn)行。