CJJ专用ASP类库中的某个class
CJJ专用ASP类库中的某个class
发布时间:2016-12-29 来源:查字典编辑
摘要:作为程序员,相信每个人都有自己的函数库及类库。在做项目时,从库里面提取想要的函数及类。这样可以提高开发效率。CJJ专用ASP类库中的某个cl...

作为程序员,相信每个人都有自己的函数库及类库。在做项目时,从库里面提取想要的函数及类。这样可以提高开发效率。CJJ专用ASP类库中的某个class

复制代码 代码如下:

'----********************TConnString*****************************----

'数据库连接字符串结构体

ClassTConnString

PublicDBName,DBPath,DBServer,DBUser,DBPass,DBType

EndClass

'----********************TConnString*****************************----

'----*********************TDBOperate*****************************----

'通用数据库操作类

ClassTDBOperate

Privatecls_oConn,cls_oRS'类私有Connection对象、RecordSet对象

Privatecls_sErrInfo,cls_sConn,cls_sSQL,cls_sURL,cls_sFormAction

Privatecls_iPageSize'分页数

Privatecls_lTotalPage,cls_lTotalRecord,cls_lPageNo

'类初始化

PrivateSubClass_Initialize()

EndSub

'*****************************************

'类型:属性

'目的:根据获取的ConnectionString,创建数据库连接

'输入:a_sConn:数据类型字符串

'返回:无

'*****************************************

PublicPropertyLetSetConn(a_sConn)

DimsObjType

sObjType=LCase(TypeName(a_sConn))

IfsObjType<>"string"Then

cls_sErrInfo=cls_sErrInfo&"<li>SetConn:非法的字符串参数</li>"&Chr(10)

ExitProperty

EndIf

Setcls_oConn=CreateObject("Adodb.Connection")

OnErrorResumeNext

cls_oConn.Opena_sConn

IfErrThen

Err.Clear

Setcls_oConn=Nothing

Onerrorgoto0

cls_sErrInfo=cls_sErrInfo&"<li>数据库连接出错</li>"&Chr(10)

EndIf

OnErrorGoto0

EndProperty

'*****************************************

'类型:属性

'目的:根据获取的Connection对象,创建数据库连接

'输入:a_oConn:数据类型字符串

'返回:无

'*****************************************

PublicPropertySetSetConn(a_oConn)

DimsObjType,sConn

DimoConnStr

sObjType=LCase(TypeName(a_oConn))

SelectCasesObjType

Case"connection"

'设置Connection对象

Setcls_oConn=a_oConn

Case"tconnstring"

sConn=""

SetoConnStr=a_oConn

SelectCase(oConnStr.DBType)

Casegbl_iDB_Access

sConn="Provider=micorsoft.jet.oledb.4.0;UserID="&oConnStr.DBUser&";Password="&Replace(oConnStr.DBPass,Chr(0),"")&";InitialCatalog="&oConnStr.DBName&";DataSource="&SqlLocalName&";"

Casegbl_iDB_MsSQL

sConn="Provider=Sqloledb;UserID="&oConnStr.DBUser&";Password="&Replace(oConnStr.DBPass,Chr(0),"")&";InitialCatalog="&oConnStr.DBName&";DataSource="&oConnStr.DBServer&";"

EndSelect

IfsConn=""Then

cls_sErrInfo=cls_sErrInfo&"<li>数据库连接对象出错,无法创建Connection对象</li>"&Chr(10)

ExitProperty

EndIf

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

cls_sConn=sConn

Setcls_oConn=CreateObject("Adodb.Connection")

OnErrorResumeNext

cls_oConn.OpensConn

IfErrThen

Err.Clear

Setcls_oConn=Nothing

cls_sErrInfo=cls_sErrInfo&"<li>数据库连接出错</li>"&Chr(10)

EndIf

OnErrorGoto0

CaseElse

cls_sErrInfo=cls_sErrInfo&"<li>SetConn:非法的对象参数</li>"&Chr(10)

ExitProperty

EndSelect

EndProperty

'*****************************************

'类型:属性

'目的:设置RecordSet对象

'输入:a_sSQL:SQL语句。

'返回:无。

'*****************************************

PublicPropertyLetSetRS(a_sSQL)

IfLCase(TypeName(cls_oConn))<>"connection"Then

cls_sErrInfo=cls_sErrInfo&"<li>非法的Connection对象,无法创建RecordSet对象</li>"&Chr(10)

ExitProperty

EndIf

cls_sSQL=a_sSQL

'创建RecordSet对象

Setcls_oRS=CreateObject("Adodb.RecordSet")

'OnErrorResumeNext

cls_oRS.Opencls_sSQL,cls_oConn,1,1

'OnErrorGoto0

EndProperty

'*****************************************

'类型:属性

'目的:设置RecordSet对象

'输入:a_oRS:RecordSet对象

'返回:无。

'*****************************************

PublicPropertySetSetRS(a_oRS)

IfLCase(TypeName(a_oRS))<>"recordset"Then

cls_sErrInfo=cls_sErrInfo&"<li>非法的RecordSet对象</li>"&Chr(10)

ExitProperty

EndIf

'设置RecordSet对象

Setcls_oRS=a_oRS

EndProperty

'*****************************************

'类型:属性

'目的:设置RecordSet对象

'输入:a_oRS:RecordSet对象

'返回:返回一RecordSet对象

'*****************************************

PublicPropertyGetGetRS()

SetGetRS=cls_oRS

EndProperty

'获取Connection对象

PublicPropertyGetGetConn()

Ifcls_sErrInfo<>""Then

CallShowError()

EndIf

IfLCase(TypeName(cls_oConn))<>"connection"Then

cls_sErrInfo=cls_sErrInfo&"<li>Connection对象获取失败</li>"

'ExitProperty

EndIf

SetGetConn=cls_oConn

EndProperty

'返回数据库连接字符串

PublicPropertyGetConnStr

ConnStr=cls_sConn

EndProperty

'设置第个页面显示的数据数

PublicPropertyLetPageSize(a_iPageSize)

IfNotIsNumeric(a_iPageSize)Then

cls_sErrInfo=cls_sErrInfo&"<li>无效的分页记录数参数</li>"&Chr(10)

ExitProperty

EndIf

cls_iPageSize=a_iPageSize

EndProperty

'设置SQL语句,用于建立RecordSet对象

PublicPropertyLetSQL(a_sSQL)

IfIsNone(a_sSQL)Then

cls_sErrInfo=cls_sErrInfo&"<li>没有设置SQL,无法创建RecordSet对象</li>"&Chr(10)

ExitProperty

EndIf

cls_sSQL=Trim(a_sSQL)

EndProperty

'执行数据操作

PublicSubExecute()

Ifcls_sErrInfo<>""Then

ShowError("<ul>"&Chr(10)&cls_sErrInfo&"</ul>"&Chr(10))

ExitSub

EndIf

IfLCase(TypeName(cls_oConn))="connection"Then

IfIsNumeric(cls_iPageSize)Then

Setcls_oRS=CreateObject("Adodb.RecordSet")

cls_oRS.Opencls_sSQL,cls_oConn,1,1

Else

EndIf

Else

cls_sErrInfo=cls_sErrInfo&"<li>非法的Connection对象</li>"&Chr(10)

EndIf

EndSub

'*****************************************

'类型:属性

'目的:设定或显示URL。

'输入:a_sURL:需要分页的文件地址。

'返回:无

'*****************************************

PublicPropertyLetURL(ByVala_sURL)

cls_sURL=a_sURL

EndProperty

'*****************************************

'类型:过程

'目的:统计总记录数、计算总页数

'输入:无

'返回:无

'*****************************************

PrivateSubPagination(ByVala_sStr)

DimiPosition,cls_sErrInfo,i,oRS_Temp,lTotalRecord

Ifcls_sErrInfo<>""Then

CallShowErrors()

ExitSub

EndIf

Ifcls_oRS.EofAndcls_oRS.BofThen

cls_sErrInfo=cls_sErrInfo&"<li>库中无任何记录</li>"

EndIf

'计算总计录数

SelectCaseLCase(TypeName(a_sStr))

Case"string"

SetoRS_Temp=cls_oConn.Execute(a_sStr)

lTotalRecord=CLng(oRS_Temp(0).Value)

Case"integer"

SelectCase(Int(Trim(a_sStr)))

Casegbl_iPagination_UseRcdCount'使的RecordCount方法进行分页

lTotalRecord=cls_oRS.RecordCount

Casegbl_iPagination_UsePgCount'使用PageCount方法进行分页

lTotalRecord=cls_oRS.PageCount*cls_iPageSize

EndSelect

EndSelect

cls_lTotalRecord=lTotalRecord

If(cls_lTotalRecord<=2147483647ANDcls_lTotalRecord>=-2147483648)Then

cls_lTotalRecord=CLng(cls_lTotalRecord)

Else

cls_lTotalRecord=2147483647

EndIf

Ifcls_lTotalRecord<0Then

cls_lTotalRecord=0

EndIf

'计算总页数

Ifcls_lTotalRecordModcls_iPageSize=0Then

cls_lTotalPage=CLng(cls_lTotalRecordcls_iPageSize*-1)*-1

Else

cls_lTotalPage=CLng(cls_lTotalRecordcls_iPageSize*-1)*-1+1

EndIf

'获取当前页参数

cls_lPageNo=Trim(Request.QueryString("Page"))

Ifcls_lPageNo=""Then

cls_lPageNo=Trim(Request.Form("Page"))

Ifcls_lPageNo=""Then

cls_lPageNo=1

EndIf

EndIf

'如果没有选择第几页,则默认显示第一页

Ifcls_lPageNo<>""AndIsNumeric(cls_lPageNo)Then

If(cls_lPageNo<=2147483647Andcls_lPageNo>=-2147483648)Then

cls_lPageNo=CLng(cls_lPageNo)

Else

cls_lPageNo=2147483647

EndIf

If(cls_lPageNo<=0)Then

cls_lPageNo=1

EndIf

Else'当前页参数为空或者非数字,默认将转到第1页

cls_lPageNo=1

EndIf

If(cls_lPageNo>cls_lTotalPageANDcls_lTotalPage<>0)Then

cls_lPageNo=cls_lTotalPage

EndIf

cls_oRS.PageSize=cls_iPageSize

cls_oRS.AbsolutePage=cls_lPageNo

iPosition=InstrRev(cls_sURL,"?")

cls_sFormAction=cls_sURL

IfiPosition>0Then

cls_sURL=cls_sURL&"&Page="

Else

cls_sURL=cls_sURL&"?Page="

EndIf

EndSub

'*****************************************

'类型:过程

'目的:显示分页信息

'输入:无

'返回:无

'*****************************************

PublicSubPages(ByVala_sStr)

DimstrPages,k,intTemp,intTemp1

DimsResult

IfNotIsNone(cls_sErrInfo)Then

CallShowErrors()

EndIf

'计算总页数及总记录数

CallPagination(a_sStr)

Ifcls_lTotalPage=1ThenExitSub

sResult=sResult&"<tableclass=""clsShowPage"">"&Chr(10)

sResult=sResult&"<tr>"&Chr(10)&"<td>"&Chr(10)

sResult=sResult&"<tablewidth=""100%"">"&Chr(10)

sResult=sResult&"<tr>"&Chr(10)&"<tdclass=""PageText"">"&Chr(10)

Ifcls_lTotalPage>=1Then

Ifcls_lPageNo<=1Then

sResult=sResult&"首页前页<ahref="""&cls_sURL&cls_lPageNo+1&""">后页</a><ahref="""&cls_sURL&cls_lTotalPage&""">末页</a>"&Chr(10)

Else

Ifcls_lPageNo>=cls_lTotalPageThen

sResult=sResult&"<ahref="""&cls_sURL&"1"">首页</a><ahref="""&cls_sURL&cls_lPageNo-1&""">前页</a>"&"后页末页"&Chr(10)

Else

sResult=sResult&"<ahref="""&cls_sURL&"1"">首页</a><ahref="""&cls_sURL&cls_lPageNo-1&""">前页</a>"&"<ahref="""&cls_sURL&cls_lPageNo+1&""">后页</a><ahref="""&cls_sURL&cls_lTotalPage&""">末页</a>"&Chr(10)

EndIf

EndIf

sResult=sResult&"页次:<strong>"&cls_lPageNo&"</strong>/"&cls_lTotalPage&"页共<strong>"&cls_lTotalRecord&"</strong>条记录<strong>"&cls_iPageSize&"</strong>条/页</td>"&Chr(10)

sResult=sResult&"<formname=""gopage""action="""&cls_sFormAction&"""method=""post"">"&Chr(10)

sResult=sResult&"<td>第"

sResult=sResult&"<inputtype=""text""name=""pageno""class=""InputPage""title=""请输入页号,然后回车"">页"&Chr(10)

sResult=sResult&"<inputtype=""submit""class=""GotoPage""value=""GO""></td></form></tr>"&Chr(10)

EndIf

sResult=sResult&"</table>"&Chr(10)&"</td>"&Chr(10)&"</tr>"&Chr(10)&"</table>"&Chr(10)

'输出分页信息

Response.Write("result:"&sResult)

EndSub

'类销毁

PrivateSubClass_Terminate()

IfLCase(TypeName(cls_oConn))<>"nothing"Then

cls_oConn.Close

Setcls_oConn=Nothing

EndIf

IfLCase(TypeName(cls_oRS))<>"nothing"Then

'cls_oRS.Close

Setcls_oRS=Nothing

EndIf

EndSub

'*****************************************

'类型:过程

'目的:显示分页类中出现的错误信息

'输入:无

'返回:无

'*****************************************

PrivateSubShowErrors()

Ifcls_cls_sErrInfo<>""Then

cls_cls_sErrInfo="<ul>"&Chr(10)&cls_sErrInfo&"</ul>"&Chr(10)

Response.Write(cls_cls_sErrInfo)

Response.End

EndIf

EndSub

EndClass

'----*********************TDBOperate*****************************----

稍提一个编码风格

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

复制代码 代码如下:

<>

<%

'*****************************************

'类型:函数

'目的:报错

'参数:

'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>

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新ASP教程学习
热门ASP教程学习
编程开发子分类