zoukankan      html  css  js  c++  java
  • 用組件封裝數據庫操作(二)

    前段日子发表的文章,数据库的连接代码可以直接在ASP文件中显示出来。这次又进行了一次封装。

    打开vb,新建Activex控件,工程名称为WebDb,类模块名称为GetInfomation

    引用”Microsoft Activex Data Object 2.6 Library ”

    Private Conn As ADODB.Connection

    Private Rs As ADODB.Recordset

     

    作用:判断数据库是否正确连结

    '自己可以更改连接串

    Public Function GetConn()

    Conn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind;Data Source=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 = "select 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()方法

    <HEAD>

     

    <!- 测试页 ->

    <!- 功能:测试组件 ->

    <!- 作者:龙卷风.NET ->

     

    <%

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

    %>

     

    <TITLE>

       数据组件测试页

    </TITLE>

     

    <H1><CENTER>欢迎使用数据组件(www.ourfly.com)</CENTER></H1>

     

    <%

           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 "<CENTER><TABLE BORDER=1 cellspacing=0 cellpadding=2>"

             Response.Write "<tr BGCOLOR=silver align=center>"

             Response.Write "<td>EmployeeID</TD>"

             Response.Write "<td>LastName</td>"

              Response.Write "<td>FirstName</td>"

                   Response.Write "<td>Title</a></td>"

              Response.Write "<td>TitleOfCourtesy</a></td>"

              Response.Write "<td>BirthDate</td>"

              Response.Write "<td>HireDate</td>"

              Response.Write "<td>Address</td>"

              Response.Write "<td>City</td>"

             Response.Write "</tr>"

     

                   Rs.AbsolutePage = Page

                   For iPage = 1 To Rs.PageSize

                        Response.Write "<TR align=right>"

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

                              Response.Write "<td>"&Rs.fields.item(i)&"</td>"

                          next

                        Response.Write "</TR>"

                          Rs.MoveNext

                          If Rs.EOF Then Exit For

                   next

          Response.Write "</TABLE></CENTER>"

    %>

     

    <Form name="myform" method="get">

    <%If Page <> 1 Then%>

         <A HREF="<%=Myself%>?Page=1">第一页</A>

         <A HREF="<%=Myself%>?Page=<%=(Page-1)%>">上一页</A>

    <%End If%>

     <%If Page <> Rs.PageCount Then%>

     <A HREF="<%=Myself%>?Page=<%=(Page+1)%>">下一页</A>

     <A HREF="<%=Myself%>?Page=<%=Rs.PageCount%>">最后的一页</A>

    <%End If%>

    页次:<FONT COLOR="Red"><%=Page%>/<%=Rs.PageCount%></FONT>

    </Form>

     

    <%

    Rs.close

    %>

     

     

    新建ASP页面,”TestWebDb2.asp”。主要用来测试GetEmployeeName()方法

    这个页面相对简单一些

    <HEAD>

     

    <!- 测试页 ->

    <!- 功能:测试组件 ->

    <!- 作者:龙卷风.NET ->

     

    <%

        Dim DataQuery

           Dim strID

           Dim strResult

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

    %>

     

    <TITLE>

       数据组件测试页

    </TITLE>

     

    <H1><CENTER>欢迎使用数据组件(www.ourfly.com)</CENTER></H1>

     

    <%

        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

    %>

     

    <FORM NAME="MyForm">

    <INPUT TYPE=TEXTBOX NAME="EmpID" SIZE=40><P>

     

    <INPUT LANGUAGE="VBScript"

           TYPE="BUTTON"

           VALUE="Search"

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

                   + MyForm.EmpID.Value">

     

    </FORM>

    </HEAD>

    一些想法:数据库连结如果放到组件里,如果要修改数据库连结,则要重新编译组件,可能会由此引发一些问题(但是推荐这种,毕竟数据库名和服务器名不会经常改)

    如果数据库连结放到ASP页面,可以通过属性传值到组件中,但是安全性会降低。

    真是……

     

    好了,这篇文章结束了,希望对大家有帮助

    今后的话题便是如何实现AspToDll这个软件的功能,我们一步一步实现。

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    win10应用 UWP 使用MD5算法
    win10应用 UWP 使用MD5算法
    用git上传代码到新浪云
    用git上传代码到新浪云
    redis三节点sentinel部署
    [HNOI/AHOI2018]转盘
    用git上传代码到新浪云
    Windows-universal-samples-master示例 XamlCommanding
    Windows-universal-samples-master示例 XamlCommanding
    Windows-universal-samples-master示例 XamlCommanding
  • 原文地址:https://www.cnblogs.com/Athrun/p/1127433.html
Copyright © 2011-2022 走看看