广

ASP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    CJJ专用ASP类库中的某个class

    2018-05-08 11:29:14 次阅读 稿源:互联网
    零七广告
    作为程序员,相信每个人都有自己的函数库及类库。在做项目时,从库里面提取想要的函数及类。这样可以提高开发效率。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;i<aElmnts.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" width="91%">
        <thead>
            <tr>
                <td style="text-align:center" width="94">字段名</td>
                <td style="text-align:center" width="113">字段类型</td>
                <td width="27" style="text-align:center">使用</td>
                <td width="18" style="text-align:center">只读</td>
                <td style="text-align:center" width="80">表单项类型</td>
                <td style="text-align:center" width="100">表单项名称</td>
                <td style="text-align:center" width="92">表单项描述</td>
                <td style="text-align:center" width="87">表单项验证</td>
                <td style="text-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>


    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告