【 tulaoshi.com - Web开发 】
                             
                            作为程序员,相信每个人都有自己的函数库及类库。在做项目时,从库里面提取想要的函数及类。这样可以提高开发效率。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 & "liSetConn:非法的字符串参数/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 & "liSetConn:非法的对象参数/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 & "liConnection对象获取失败/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_lTotalPage0) 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
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)      sErrInfo = ""
      Response.Write("pError Number:era_" & a_Num & "/p")
      Select Case a_Num
      Case "1000"
          sErrInfo = "参数类型不正确,请检查"
      Case "1100"
          sErrInfo = "无法打开数据库连接"
      Case Else
          sErrInfo = "发现未知错误,请与管理员联系"
      End Select
      sErrInfo = "pError 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);  
    }
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)    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" 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