| 网站首页 | 资讯 | 影音 | 图片 | 论坛 | 模拟驾考 | 免费取名算命 | 瓷都工具 | 留言本 | 域名 | 瓷都商城 | 汇款 | 
|
璧勮棣栭〉
|
鐡烽兘寰峰寲
|
绔欏唴鏂伴椈
|
褰辫鍓ф儏
|
姹借溅涓栫晫
|
缃戠粶鏂囨憳
|
鍛ㄦ槗鍏崷
|
鏁欑▼鎶€宸�
|
鎴夸骇淇℃伅
|
您现在的位置: 瓷都热线|诚信中国:“一就是一”(1941.CN) >> 资讯 >> 教程技巧0 >> 网络编程 >> 正文 登录 注册
专 题 栏 目
  • 鍥涘窛姹跺窛8.0绾у己闇�
  • 鏈哄姩杞﹂┚椹跺憳鑰冭瘯璧勬枡
  • 楂樿€冭瘯棰樺強绛旀
  • 最 新 热 门
    最 新 推 荐
     [组图]期待!德化龙门湖
     [组图]德化:“绿色动脉
     [图文]德化龙门滩龙门湖
     [图文]福建德化县美湖镇
     [组图]德化各种花卉相继
     [组图]福建德化九仙山迎
     [图文]德化石牛山惊现双
     [组图]千年古瓷都德化的
     [组图]警方连捣5传销窝点
     [组图]福建民俗博物馆办
    相 关 文 章
    如何制作无状态的ASP组件
    GB与BIG5内码转换COM原代
    一个用组件动态创建Exce
    利用OWC服务器端组件动态
    利用WinWebMail组件在AS
    用webeasymail组件发送邮
    Asp组件高级入门与精通系
    Asp组件中级入门与精通系
    Asp组件中级入门与精通系
    Asp组件初级入门与精通
    使用组件封装数据库操作         ★★★
    使用组件封装数据库操作
    作者:龙卷风.NET 文章来源:csdn.net 更新时间:2006-4-22 22:42:26
    【声明:转载此信息在于传递更多信息,其内容表达的观点并不代表本站立场,由这些信息所产生的一切后果本站不负任何责任。如果您对本信息有什么意见,欢迎和本站联系,谢谢!】http://CiDu.Net

     

      其实,大家在书写asp程序时,最担心的可能就是数据库的连接信息,会被一些人看到,进行一些破坏。下面我们用vb6.0来做一个动态链接库(.dll)来隐藏数据库的连接信息。

      启动vb6.0,新建-->Active  dll工程。单击"工程"-->引用,选择"microsoft  active  server  pages  object  library" 和"microsoft  activeX  data  objects  2.1  library"两项。将类模块的名称改为dcss.将工程的名称改为yygwy.保存工程文件yygwy.vbp和类文件dcss.cls。

    在dcss.cls中写入:
    Private  myscriptingcontext  As  ScriptingContext
    Private  myapplication  As  Application
    Private  myrequest  As  Request
    Private  myresponse  As  Response
    Private  myserver  As  Server
    Private  mysession  As  Session

    Public  Sub  onstartpage(passedscriptingcontext  As  ScriptingContext)
    Set  myscriptingcontext  =  passedscriptingcontext
    Set  myapplication  =  myscriptingcontext.Application
    Set  myrequest  =  myscriptingcontext.Request
    Set  myresponse  =  myscriptingcontext.Response
    Set  myserver  =  myscriptingcontext.Server
    Set  mysession  =  myscriptingcontext.Session
    End  Sub

    Public  Sub  onendpage()
    Set  myscriptingcontext  =  Nothing
    Set  myapplication  =  Nothing
    Set  myrequest  =  Nothing
    Set  myresponse  =  Nothing
    Set  myserver  =  Nothing
    Set  mysession  =  Nothing
    End  Sub

    '以上语句是必须的。
    '定义两个公有函数

    Public  Function  datasource()  As  Variant
    datasource  =  "driver={sql  server};server=yang;uid=sa;pwd=;  database=dcss"
    End  Function

    编译生成dcss.dll文件。注册regsvr32  路径\dcss.dll。

    用visual  interdev打开global.asa文件.当然了,你也可以在其它文件中使用。
    set    dcss=server.CreateObject("yygwy.dcss")  
    oconn=dcss.datasource()          
    application("strconn")=oconn  

    在其它的页面中如下调用即可:
    set  objConn  =  Server.CreateObject("ADODB.Connection")
    objConn.Open  application("strconn")

    前段日子发表的文章,数据库的连接代码可以直接在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"

        strSql = strSql &",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 at cidu.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.97531.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这个软件的功能,我们一步一步实现。


     


    声明:以上信息资料大都是网上搜集而来,版权归作者,如有版权问题请留言告知我将马上改正。
    文中所提到的各种观点只是原文观点,各种说法未经一一确认。并不代表本站认可此观点!!
    资讯录入:admin    责任编辑:admin 
  • 上一篇资讯:

  • 下一篇资讯:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    点击数:532
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论