CJJ专用ASP类库中的某个class

作为程序员,相信每个人都有自己的函数库及类库。在做项目时,从库里面提取想要的函数及类。这样可以提高开发效率。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" 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>

(0)

相关推荐

  • CJJ专用ASP类库中的某个class

    作为程序员,相信每个人都有自己的函数库及类库.在做项目时,从库里面提取想要的函数及类.这样可以提高开发效率.CJJ专用ASP类库中的某个class 复制代码 代码如下: '----******************** TConnString *****************************----   '数据库连接字符串结构体   Class TConnString       Public DBName,DBPath,DBServer,DBUser,DBPass,DBType  

  • asp.net类库中添加WebService引用出现问题解决方法

    在Web项目内添加WebService的引用是件很简单的事情,今天在类库中添加WebService引用时候,却遇到了问题,特此记录下来. 1.添加服务引用. 2.点击高级 3.添加Web引用 4.看到了就跟Web项目添加WebService一样了 添加完成后,再次点击 添加引用就出现了添加Web引用了

  • asp.net 类库中使用ConfigurationManager.ConnectionStrings

    一直没弄明白怎么在类库中找不到 ConfigurationManager.ConnectionStrings 后面才发现没有添加System.configuration的引用,添加后: 引入命名空间: 复制代码 代码如下: using System.Configuration; 便可以使用了: 复制代码 代码如下: public static string ConnectionString = ConfigurationManager.ConnectionStrings["Conn"]

  • ASP.NET在底层类库中获取Session C#类中获取Session 原创

    类库中获取Session首先要添加引用 获取Session 复制代码 代码如下: string user = (string)HttpContext.Current.Session["user"]; 获取Page 复制代码 代码如下: System.Web.UI.Page page = (System.Web.UI.Page)HttpContext.Current.Handler; 获取当前 Request Response 等对象都是在这里 复制代码 代码如下: HttpRespon

  • ASP.NET中常用的优化性能的方法

    1. 数据库访问性能优化   数据库的连接和关闭  访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响.系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求.  连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能.因此,在建立数据库连接后只有在真正需要操作时才打开连接,

  • asp.net中EXCEL数据导入到数据库的方法

    本文实例讲述了asp.net中EXCEL数据导入到数据库的方法.分享给大家供大家参考.具体分析如下: excel是办公中非常常用的一个办公表格了,但我们在开发中通常会需要直接把excel数据快速导入到数据库中了,这里整理了一个asp.net中EXCEL数据导入到数据库的例子供各位参考学习. 注意:EXCEL中的第一行不能导入. 下面是源码:IntoExcel.aspx: 复制代码 代码如下: <%@ Page  AutoEventWireup="true" CodeFile=&q

  • 在ASP.NET中重写URL的代码

    经常有人请我指导应该如何动态地"重写"URL,以在他们的ASP.NETweb应用中发布比较干净的URL端点.这个博客帖子概述了几个方法,你可以用来在ASP.NET中干净地映射或重写URL,以及按照你自己的需求组织你的URL的结构. 为什么URL映射和重写很重要? 下面是开发人员想要对URL有更大的灵活性的最常见的场景: 1) 处理这样的情形:你要更改你的web应用中网页的结构,但你同时也要确保在你移动网页后,那些被人收藏的老URL不会成为死链接.重写URL允许你透明地将请求转交到新的网

  • ASP.NET中利用存储过程实现模糊查询

    一.建立存储过程 在MSSQL中的Northwind数据库中为employess表新建存储过程(作用按LastName进行模糊查询): CREATE PROCEDURE Employess_Sel @lastname nvarchar (20)ASselect lastname from Employees where lastname like '%' + @lastname + '%'GO 二.窗体设计 1.新建ASP.NET Web应用程序,命名为WebSql,选择保存路径然后点击确定.

  • ASP.NET中常见文件类型、扩展名、存放位置及用途总结

    .asax 应用程序根目录. 通常是 Global.asax 文件,该文件包含从 HttpApplication 类派生并表示该应用程序的代码. 有关更多信息,请参见 Global.asax 语法. .ascx 应用程序根目录或子目录. Web 用户控件文件,该文件定义自定义.可重复使用的用户控件. 有关更多信息,请参见 ASP.NET 用户控件. .ashx 应用程序根目录或子目录. 一般处理程序文件,该文件包含实现 IHttpHandler 接口以处理所有传入请求的代码. 有关更多信息,请参

  • 在.NET Core类库中使用EF Core迁移数据库到SQL Server的方法

    前言 如果大家刚使用EntityFramework Core作为ORM框架的话,想必都会遇到数据库迁移的一些问题. 起初我是在ASP.NET Core的Web项目中进行的,但后来发现放在此处并不是很合理,一些关于数据库的迁移,比如新增表,字段,修改字段类型等等,不应该和最上层的Web项目所关联,数据的迁移文件放到这里也感觉有点多余,有点乱乱的感觉,所以才想着单独出来由专门的项目进行管理会比较好,也比较清晰! 注意目标框架选择的是.NET Core 2.0而不是.NET Standard 2.0.

随机推荐