使用元件封裝資料庫操作(二) (轉)

amyz發表於2007-08-17
使用元件封裝資料庫操作(二) (轉)[@more@] 

使用封裝操作(二)

前段日子發表的文章,資料庫的連線程式碼可以直接在中顯示出來。這次又進行了一次封裝。:namespace prefix = o ns = "urn:schemas--com::office" />

開啟vb,新建,工程名稱為,類模組名稱為GetInfomation

引用”Microsoft Activex Data 2.6 Library ”

Private Conn As ADODB.Connection

Private Rs As ADODB.Recordset

 

‘作用:判斷資料庫是否正確連結

'自己可以更改連線串

Public Function GetConn()

Conn.Open "Provr=OLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind;Data =yang"

If Err.Number <> 0 Then

  GetConn = False

Else

  GetConn = True

End If

End Function

 

‘根據輸入的僱員ID,得到僱員的名稱

Public Function GetEmployeeName(strEmployeeID As Integer) As String

 

  Dim strSql As String

  Set rs = New ADODB.Recordset

  strSql = " LastName+firstname from employees where EmployeeID=" & strEmployeeID

 

  rs.Open strSql, Conn, adOpenStatic, adLockOptimistic

 

  If rs.EOF Then

  GetEmployeeName = ""

  Else

  GetEmployeeName = rs.Fields(0)

  End If

 

  rs.Close

End Function

‘返回所有的僱員列表

Public Function GetEmployeeList() As ADODB.Recordset

 

  Dim strSql As String

  Set rs = New ADODB.Recordset

  strSql = "select EmployeeID,LastName,FirstName,Title,TitleOfCourtesy,BirthDate,HireDate,Address,City from employees"

  rs.CursorLocation = adUseClient

  rs.Open strSql, Conn, adOpenStatic

 

  Set GetEmployeeList = rs

  'rs.Close

End Function

 

我們進行測試

新建ASP頁面,”TestWebDb1.asp”。主要用來測試GetEmployeeList()方法

 

 

  Dim strTopic

  Dim strTitle

  Dim strContents

  Dim DataQuery

  Dim Rs

  Dim Myself

  Myself=Request.ServerVariables("script_name")

  Set DataQuery=Server.CreateObject("WebDb.GetInfomation")

  Set Rs=Server.CreateObject("adodb.recordset") 

%>

 

<p>  資料元件測試頁</p> <p></p>

 

歡迎使用資料元件()

 

  Dim Flag

  Flag=DataQuery.GetConn()

  If Flag=false then

    ResPonse.Write "資料庫沒有連結,請檢查"

    ResPonse.End

  End if

 

  Set Rs=DataQuery.GetEmployeeList()

  if rs.eof then

    Response.write "沒有資料,請查詢"

    Response.end

  end if

 

  Rs.PageSize =3

  Page= CLng(Request.QueryString ("Page"))

 

  If Page < 1 Then Page = 1

  If Page > Rs.PageCount Then Page = Rs.PageCount

 

  Response.Write "

"

   Response.Write "

"

  Response.Write "

"

  Response.Write "

"

     Response.Write "

"

   Response.Write "

"

     Response.Write "

"

     Response.Write "

"

     Response.Write "

"

     Response.Write "

"

     Response.Write "

"

  Response.Write "

"

 

   Rs.AbsolutePage = Page

   For iPage = 1 To Rs.PageSize

       Response.Write "

"

    for i=0 to Rs.fields.count-1

    Response.Write "

"

   next

       Response.Write "

"

   Rs.MoveNext

   If Rs.EOF Then Exit For

    next

   Response.Write "

EmployeeIDLastNameFirstNameTitleTitleOfCourtesyBirthDateHireDateAddressCity
"&Rs.fields.item(i)&"
"

%>

 

1 Then%>

  第一頁

  上一頁

  Rs.PageCount Then%>

  下一頁

  最後的一頁

頁次:/

 

Rs.close

%>

 

 

新建ASP頁面,”TestWeb.asp”。主要用來測試GetEmployeeName()方法

這個頁面相對簡單一些

 

 

  Dim DataQuery

  Dim strID

  Dim strResult

  Set DataQuery=Server.CreateObject("WebDb.GetInfomation")

%>

 

<p>  資料元件測試頁</p> <p></p>

 

歡迎使用資料元件()

 

  If Len(Request.QueryString("ID")) > 0 Then

  strID = Request.QueryString("ID")

 

  Dim Flag

    Flag=DataQuery.GetConn()

  If Flag=false then

    ResPonse.Write "資料庫沒有連結,請檢查"

    ResPonse.End

  End if

 

    strResult=DataQuery.GetEmployeeName(cint(strID))

  if strResult="" then

    Response.Write "對不起,沒有這個編號,請查詢"

    Response.End

  else

    ResPonse.Write strResult

  end if

  End If

%>

 

 

  TYPE="BUTTON"

  VALUE="Search"

   ONCLICK="window.location.href = 'TestWebDb2.asp?ID=' _

  + MyForm.EmpID.Value">

 

一些想法:資料庫連結如果放到元件裡,如果要修改資料庫連結,則要重新編譯元件,可能會由此引發一些問題(但是推薦這種,畢竟資料庫名和名不會經常改)

如果資料庫連結放到ASP頁面,可以透過屬性傳值到元件中,但是性會降低。

真是……

 

好了,這篇文章結束了,希望對大家有幫助

今後的話題便是如何實現AspToDll這個的功能,我們一步一步實現。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-962903/,如需轉載,請註明出處,否則將追究法律責任。

相關文章