主页 > 知识库 > CJJ专用ASP类库中的某个class

CJJ专用ASP类库中的某个class

热门标签:阿里云 Linux服务器 电子围栏 服务器配置 科大讯飞语音识别系统 银行业务 团购网站 Mysql连接数设置
作为程序员,相信每个人都有自己的函数库及类库。在做项目时,从库里面提取想要的函数及类。这样可以提高开发效率。CJJ专用ASP类库中的某个class
复制代码 代码如下:

  '----******************** TConnString *****************************----
  '数据库连接字符串结构体
  Class TConnString
      Public DBName,DBPath,DBServer,DBUser,DBPass,DBType
  End Class
  '----******************** TConnString *****************************----

  '----********************* TDBOperate *****************************----
  '通用数据库操作类
  Class TDBOperate
      Private cls_oConn,cls_oRS '类私有Connection对象、RecordSet对象
      Private cls_sErrInfo,cls_sConn,cls_sSQL,cls_sURL,cls_sFormAction
      Private cls_iPageSize '分页数
      Private cls_lTotalPage,cls_lTotalRecord,cls_lPageNo

      '类初始化
      Private Sub Class_Initialize()
      End Sub

      '*****************************************
      ' 类型:    属性
      ' 目的:    根据获取的Connection String,创建数据库连接
      ' 输入:    a_sConn:数据类型字符串
      ' 返回:    无
      '*****************************************
      Public Property Let SetConn(a_sConn)
          Dim sObjType


          sObjType = LCase(TypeName(a_sConn))
          If sObjType > "string" Then
              cls_sErrInfo = cls_sErrInfo  "li>SetConn:非法的字符串参数/li>"  Chr(10)
              Exit Property
          End If

          Set cls_oConn = CreateObject("Adodb.Connection")
          On Error Resume Next
          cls_oConn.Open a_sConn
           If Err Then
              Err.Clear
              Set cls_oConn = Nothing
              On error goto 0
              cls_sErrInfo = cls_sErrInfo  "li>数据库连接出错/li>"  Chr(10)
          End If
          On Error Goto 0
      End Property

      '*****************************************
      ' 类型:    属性
      ' 目的:    根据获取的Connection对象,创建数据库连接
      ' 输入:    a_oConn:数据类型字符串
      ' 返回:    无
      '*****************************************
      Public Property Set SetConn(a_oConn)
          Dim sObjType,sConn
          Dim oConnStr

          sObjType = LCase(TypeName(a_oConn))

          Select Case sObjType
          Case "connection"
              '设置Connection对象
              Set cls_oConn = a_oConn
          Case "tconnstring"
             sConn = ""
             Set oConnStr = a_oConn
             Select Case (oConnStr.DBType)
             Case gbl_iDB_Access
                  sConn = "Provider = micorsoft.jet.oledb.4.0; User ID = "  oConnStr.DBUser  "; Password = "  Replace(oConnStr.DBPass, Chr(0), "")  ";Initial Catalog = "  oConnStr.DBName  "; Data Source = "  SqlLocalName  ";"
              Case gbl_iDB_MsSQL
                  sConn = "Provider = Sqloledb; User ID = "  oConnStr.DBUser  "; Password = "  Replace(oConnStr.DBPass, Chr(0), "")  ";Initial Catalog = "  oConnStr.DBName  "; Data Source = "  oConnStr.DBServer  ";"
              End Select

              If sConn = "" Then
                  cls_sErrInfo = cls_sErrInfo  "li>数据库连接对象出错,无法创建Connection对象/li>"  Chr(10)
                  Exit Property
              End If

             '设置Connection连接串值,供ConnStr属性返回
              cls_sConn = sConn

              Set cls_oConn = CreateObject("Adodb.Connection")
              On Error Resume Next
              cls_oConn.Open sConn
               If Err Then
                  Err.Clear
                  Set cls_oConn = Nothing
                  cls_sErrInfo = cls_sErrInfo  "li>数据库连接出错/li>"  Chr(10)
              End If
              On Error Goto 0
          Case Else
              cls_sErrInfo = cls_sErrInfo  "li>SetConn:非法的对象参数/li>"  Chr(10)
              Exit Property
          End Select
      End Property

      '*****************************************
      ' 类型:    属性
      ' 目的:    设置RecordSet对象
      ' 输入:    a_sSQL:   SQL语句。
      ' 返回:    无。
      '*****************************************
      Public Property Let SetRS(a_sSQL)
          If LCase(TypeName(cls_oConn)) > "connection" Then
              cls_sErrInfo = cls_sErrInfo  "li>非法的Connection对象,无法创建RecordSet对象/li>"  Chr(10)
              Exit Property
          End If

          cls_sSQL = a_sSQL

          '创建RecordSet对象
          Set cls_oRS = CreateObject("Adodb.RecordSet")


'          On Error Resume Next
          cls_oRS.Open cls_sSQL,cls_oConn,1,1
'          On Error Goto 0
      End Property

      '*****************************************
      ' 类型:    属性
      ' 目的:    设置RecordSet对象
      ' 输入:    a_oRS:   RecordSet对象
      ' 返回:    无。
      '*****************************************
      Public Property Set SetRS(a_oRS)
          If LCase(TypeName(a_oRS))>"recordset" Then
              cls_sErrInfo = cls_sErrInfo  "li>非法的RecordSet对象/li>"  Chr(10)
              Exit Property
          End If

          '设置RecordSet对象
          Set cls_oRS = a_oRS
      End Property

      '*****************************************
      ' 类型:    属性
      ' 目的:    设置RecordSet对象
      ' 输入:    a_oRS:   RecordSet对象
      ' 返回:   返回一RecordSet对象
      '*****************************************
      Public Property Get GetRS()
          Set GetRS = cls_oRS
      End Property

      '获取Connection对象
      Public Property Get GetConn()
          If cls_sErrInfo > "" Then
              Call ShowError()
          End If

          If LCase(TypeName(cls_oConn))>"connection" Then
              cls_sErrInfo = cls_sErrInfo  "li>Connection对象获取失败/li>"
'              Exit Property              
          End If

          Set GetConn = cls_oConn
      End Property

      '返回数据库连接字符串
      Public Property Get ConnStr
          ConnStr = cls_sConn
      End Property

      '设置第个页面显示的数据数
      Public Property Let PageSize(a_iPageSize)
          If Not IsNumeric(a_iPageSize) Then
              cls_sErrInfo = cls_sErrInfo  "li>无效的分页记录数参数/li>"  Chr(10)
              Exit Property
          End If

          cls_iPageSize = a_iPageSize
      End Property

      '设置SQL语句,用于建立RecordSet对象
      Public Property Let SQL(a_sSQL)
           If IsNone(a_sSQL) Then
              cls_sErrInfo = cls_sErrInfo  "li>没有设置SQL,无法创建RecordSet对象/li>"  Chr(10)
              Exit Property
          End If

          cls_sSQL = Trim(a_sSQL)
      End Property

      '执行数据操作
      Public Sub Execute()
          If cls_sErrInfo > "" Then
              ShowError("ul>"  Chr(10)  cls_sErrInfo  "/ul>"  Chr(10))
              Exit Sub
          End If

          If LCase(TypeName(cls_oConn))="connection" Then
              If IsNumeric(cls_iPageSize) Then
                  Set cls_oRS =  CreateObject("Adodb.RecordSet")
                  cls_oRS.Open cls_sSQL,cls_oConn,1,1
              Else
              End If
          Else
              cls_sErrInfo = cls_sErrInfo  "li>非法的Connection对象/li>"  Chr(10)
          End If
      End Sub

      '*****************************************
      ' 类型:    属性
      ' 目的:    设定或显示URL。
      ' 输入:    a_sURL:   需要分页的文件地址。
      ' 返回:    无
      '*****************************************
      Public Property Let URL(ByVal a_sURL)
          cls_sURL = a_sURL
      End Property

      '*****************************************
      ' 类型:    过程
      ' 目的:    统计总记录数、计算总页数
      ' 输入:    无
      ' 返回:    无
      '*****************************************
      Private Sub Pagination(ByVal a_sStr)
          Dim iPosition,cls_sErrInfo,i,oRS_Temp,lTotalRecord

          If cls_sErrInfo > "" Then
             Call ShowErrors()
             Exit Sub
          End If

          If cls_oRS.Eof And cls_oRS.Bof Then
             cls_sErrInfo = cls_sErrInfo  "li>库中无任何记录/li>"
          End If

          '计算总计录数
          Select Case LCase(TypeName(a_sStr))
          Case "string"
               Set oRS_Temp = cls_oConn.Execute(a_sStr)
               lTotalRecord = CLng(oRS_Temp(0).Value)
          Case "integer"
              Select Case (Int(Trim(a_sStr)))
              Case gbl_iPagination_UseRcdCount '使的RecordCount方法进行分页
                  lTotalRecord = cls_oRS.RecordCount
              Case gbl_iPagination_UsePgCount  '使用PageCount方法进行分页
                  lTotalRecord = cls_oRS.PageCount * cls_iPageSize
              End Select
          End Select

          cls_lTotalRecord = lTotalRecord
          If (cls_lTotalRecord=2147483647 AND cls_lTotalRecord>=-2147483648) Then
              cls_lTotalRecord = CLng(cls_lTotalRecord)
          Else
              cls_lTotalRecord = 2147483647
          End If

          If cls_lTotalRecord 0 Then
              cls_lTotalRecord = 0
          End If

          '计算总页数
          If cls_lTotalRecord Mod cls_iPageSize = 0 Then
              cls_lTotalPage = CLng(cls_lTotalRecord \&;cls_iPageSize * -1)*-1
          Else
              cls_lTotalPage = CLng(cls_lTotalRecord \&;cls_iPageSize * -1)*-1 + 1
          End If

          '获取当前页参数
          cls_lPageNo = Trim(Request.QueryString("Page"))
          If cls_lPageNo = "" Then
              cls_lPageNo = Trim(Request.Form("Page"))
                 If cls_lPageNo = "" Then
                 cls_lPageNo = 1
              End If
          End If

          '如果没有选择第几页,则默认显示第一页
          If cls_lPageNo > "" And IsNumeric(cls_lPageNo) Then
              If (cls_lPageNo = 2147483647 And cls_lPageNo>=-2147483648) Then
                  cls_lPageNo = CLng(cls_lPageNo)
              Else
                  cls_lPageNo = 2147483647
                End If
              If (cls_lPageNo=0) Then
                  cls_lPageNo = 1
              End If
          Else '当前页参数为空或者非数字,默认将转到第1页
              cls_lPageNo=1
          End If

          If (cls_lPageNo > cls_lTotalPage AND cls_lTotalPage>0) Then
              cls_lPageNo = cls_lTotalPage
          End If

          cls_oRS.PageSize     = cls_iPageSize
          cls_oRS.AbsolutePage = cls_lPageNo

          iPosition = InstrRev(cls_sURL,"?")
          cls_sFormAction = cls_sURL
          If iPosition > 0 Then
              cls_sURL = cls_sURL  "Page="
          Else
              cls_sURL = cls_sURL  "?Page="
          End If
     End Sub

      '*****************************************
      ' 类型:    过程
      ' 目的:    显示分页信息
      ' 输入:    无
      ' 返回:    无
      '*****************************************
      Public Sub Pages(ByVal a_sStr)
          Dim strPages,k,intTemp,intTemp1
          Dim sResult

          If Not IsNone(cls_sErrInfo) Then
              Call ShowErrors()
          End If

          '计算总页数及总记录数
          Call Pagination(a_sStr)

          If cls_lTotalPage = 1 Then Exit Sub
          sResult = sResult  "table class=""clsShowPage"">"  Chr(10)
          sResult = sResult  "  tr>"  Chr(10)  "    td>"  Chr(10)
          sResult = sResult  "      table width=""100%"">"  Chr(10)
          sResult = sResult  "         tr>"  Chr(10)  "           td class=""PageText"">"  Chr(10)

          If cls_lTotalPage >= 1 Then

                  If cls_lPageNo = 1 Then
                      sResult = sResult  "首页 前页 a href="""  cls_sURL  cls_lPageNo+1  """>后页/a> a href="""  cls_sURL  cls_lTotalPage  """>末页/a>"  Chr(10)
                  Else
                      If cls_lPageNo >= cls_lTotalPage Then
                          sResult = sResult  "a href="""  cls_sURL  "1"">首页/a>  a href="""  cls_sURL   cls_lPageNo -1  """>前页/a>  "  "后页  末页"  Chr(10)
                      Else
                          sResult = sResult  "a href="""  cls_sURL  "1"">首页/a> a href="""  cls_sURL   cls_lPageNo -1  """>前页/a> "  "a href="""  cls_sURL   cls_lPageNo+1  """>后页/a> a href="""  cls_sURL   cls_lTotalPage  """>末页/a>"  Chr(10)
                      End If
                  End If
                  sResult = sResult  " 页次:strong>"  cls_lPageNo  "/strong>/"  cls_lTotalPage  "页 共strong>"  cls_lTotalRecord  "/strong>条记录 strong>"  cls_iPageSize  "/strong>条/页/td>"  Chr(10)
                  sResult = sResult  "      form name=""gopage"" action="""  cls_sFormAction  """ method=""post"">"  Chr(10)
                  sResult = sResult  "      td> 第"
                  sResult = sResult  "    input type=""text"" name=""pageno"" class=""InputPage"" title=""请输入页号,然后回车"">页 "  Chr(10)
                  sResult = sResult  "input type=""submit"" class=""GotoPage"" value=""GO"">/td>/form>/tr>"  Chr(10)
          End If
          sResult = sResult  "      /table>"  Chr(10)  "    /td>"  Chr(10)  "  /tr>"  Chr(10)  "/table>"  Chr(10)

          '输出分页信息
          Response.Write("result:"  sResult)
      End Sub

      '类销毁
      Private Sub Class_Terminate()     
          If LCase(TypeName(cls_oConn))>"nothing" Then
              cls_oConn.Close
              Set cls_oConn = Nothing
          End If

          If LCase(TypeName(cls_oRS))>"nothing" Then
       '       cls_oRS.Close
              Set cls_oRS = Nothing
          End If
      End Sub


      '*****************************************
      ' 类型:    过程
      ' 目的:    显示分页类中出现的错误信息
      ' 输入:    无
      ' 返回:    无
      '*****************************************
      Private Sub ShowErrors()
          If cls_cls_sErrInfo > "" Then
              cls_cls_sErrInfo = "ul>"  Chr(10)  cls_sErrInfo  "/ul>"  Chr(10)
              Response.Write(cls_cls_sErrInfo)
              Response.End
          End If
      End Sub
  End Class
  '----********************* TDBOperate *****************************----


稍提一个编码风格

个人觉得代码混排是个鸡肋,混排的可读性差,所以我一般都只是少量混排,尽量将代码和HTML分离。
复制代码 代码如下:

!--#include file="pubdb.asp"-->

  '*****************************************
  '类型:函数
  '目的:报错
  '参数:
  'a_num:报错信息参数
  '*****************************************
  Private Function ShowError(a_Num)
      Dim sErrInfo

      sErrInfo = ""
      Response.Write("p>Error Number:era_" a_Num "/p>")
      Select Case a_Num
      Case "1000"
          sErrInfo = "参数类型不正确,请检查"
      Case "1100"
          sErrInfo = "无法打开数据库连接"
      Case Else
          sErrInfo = "发现未知错误,请与管理员联系"
      End Select
      sErrInfo = "p>Error Description:" sErrInfo "/p>"
      Response.Write(sErrInfo)
      Response.End
  End Function

  Dim oRS,sHtml

  Call OpenDB()
  Set oRS = oConn.OpenSchema(20)
  sHtml=""
  oRS.MoveFirst

  '循环读取数据库中的表名
  Do While Not oRS.EOF
      If UCase(oRS(3))="TABLE" Then
          sTemp = Trim(oRS(2))
          If sTBName = sTemp Then
              sHtml= sHtml Space(2) "option value=""" sTemp """ selected=""selected"">" sTemp "/option>" Chr(10)
          Else
              sHtml= sHtml Space(2) "option value=""" sTemp """>" sTemp "/option>" Chr(10)
          End If
      End If
      oRS.MoveNext
  Loop
  Call CloseDB()
%>

html>
head>
meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
title>数据库名/title>
script type="text/javascript">
!--
    var sDstID="";
    function serverResult(a_sUrl,a_sSrcID,a_sDstID) {
       var sValue = document.getElementById(a_sSrcID).value;
       sDstID=a_sDstID;
       if ((sValue == null) || (sValue == "")) return;

       var sUrl = a_sUrl+sValue;
       oXml.open("GET", sUrl,true);
       oXml.onreadystatechange = updateData;
       oXml.send(null); 
    }

    function updateData() {

        var aElmnts = sDstID.split(',');
        var oElmnt = null;
        var aTags=null;
        var oXmlData=null;

        if ((oXml.readyState == 4) (oXml.status == 200)) {
            aTags = oXml.responseXML.documentElement.getElementsByTagName("cjjitem");
            if (aTags.length!=aElmnts.length) {
                alert('获取的服务器端的数据错误!');
                return null;
            }

            for (var i=0;iaElmnts.length ;i++ ) {
                oElmnt = document.getElementById(aElmnts[i]);
                oElmnt.innerHTML=aTags[i].firstChild.data;
            }
        }
        return true;
    }

    var oXml = false;
    if (window.ActiveXObject) {
        oXml = new ActiveXObject("Microsoft.XMLHTTP");
    } else if (window.XMLHttpRequest) {
        oXml=new XMLHttpRequest();
    }
//-->
/script>
/head>
body>
form method="POST" name="form1" action="addFormData.asp">
    p> /p>
    p>数据库名:input type="text" name="txtDBName" size="7" value="work"> 数据库用户名:input type="text" name="DBUserName" size="8" value="sa">数据库密码:input type="password" name="DBUserPassWord" size="10" value=""> 数据库服务器路径:input type="text" name="DBServerPath" size="20" value="127.0.0.1">/p>
    p>数据表名:select size="1" id="sltTBName" name="sltTBName" onchange="serverResult('getFieldList.asp?n=','sltTBName','fieldcount,tblFields');">
    option selected="selected">请选择一个表/option>
    %=sHtml%>
    /select>/p>

div id="fieldcount">表字段个数:input type="text" id="txtFldCount" name="txtFldCount" value="0" />/div>
  table id="tblFields" border="1" width="91%">
    thead>
        tr>
            td align="center" width="94">字段名/td>
            td align="center" width="113">字段类型/td>
            td width="27" align="center">使用/td>
            td width="18" align="center">只读/td>
            td align="center" width="80">表单项类型/td>
            td align="center" width="100">表单项名称/td>
            td align="center" width="92">表单项描述/td>
            td align="center" width="87">表单项验证/td>
            td align="center">表单项默认值/td>
        /tr>
     /thead>
     tbody>
     /tbody>
    /table>
    p align="left">需要生成的动态ASP网页类型:select size="1" name="sltAspType">
    option value="0">数据添加/option>
    option value="1">数据编辑/option>
    option value="2">数据删除/option>
    option value="3">数据管理/option>
    option value="4">数据列表/option>
    /select> 文件名:input type="text" name="txtFileName" size="17" value="">
    文件类型:select size="1" name="sltFileType">
    option value="ASP">ASP/option>
    option value="PHP">PHP/option>
    option value="JSP">JSP/option>
    option value="PERL">PERL/option>
    option value="VB.NET">VB.NET/option>
    option value="C#">C#/option>
    /select>
    input type="submit" value="生成文件" name="action">/p>
/form>
/body>
/html>


您可能感兴趣的文章:
  • ASP中类Class相关内容的整理资料
  • ASP类Class入门 推荐
  • ASP 类 Class入门
  • 一个ASP创建动态对象的工厂类(类似PHP的stdClass)
  • ASPJPEG综合操作的CLASS类

标签:江苏 萍乡 衡水 蚌埠 衢州 大理 枣庄 广元

巨人网络通讯声明:本文标题《CJJ专用ASP类库中的某个class》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266