基於javascript的asp數據庫操作類,含分頁、字符串截取、用戶登陸驗證[原創]

  無聊又用了用asp,發現還是不爽,已經習慣了面向對象了,就想改進了,vbscript不用,感覺看起來很不爽,就用javascript寫了下面個類:
<%
//////////////////////////////////////////////////
//            //
//    用Javascript實現的一個數據庫操作類        //
//               //
//////////////////////////////////////////////////
 function DBOperate()
 {
  this.DBType=0;  //數據文件類別號,用以實現獲取不同的表
        this.DBPath="";  //數據庫文件相對站點的存放地址
  this.ConnString; //連接字符串
  this.Conn; //數據庫連接對象
  this.RS;   //數據集
  this.SQLString;  //操作數據庫的SQL語句
  this.GetDBPath=GetDBPath;  //獲取數據庫路徑
  this.RSMoveType=1; //紀錄集移動方式:
                   //0爲只讀,當前數據記錄只能向下移動;
                   //1爲只讀,當前數據記錄可自由移動;
                   //2爲可讀寫,當前數據記錄可自由移動;
                   //3爲可讀寫,當前數據記錄可自由移動,可看到新增記錄
       //RS.MoveFirst(),RS.MoveLast(),RS.MoveNext(),RS.MovePrevious().
       //RS.Move(n) 方法:從當前位置移動n條記錄,n>0爲正向,n<0爲反向,
       //RS.Move(n,1) 方法:從第一條紀錄處移動n條記錄,n>0,後面的參數只能爲1
  this.RSLockType=1; //紀錄集鎖定方式:
                   //1爲缺省鎖定類型,記錄集是隻讀的,不能修改記錄
       //2爲悲觀鎖定,當修改記錄時,數據提供者將嘗試鎖定記錄以確保成功地編輯記錄。只要編輯一開始,則立即鎖住記錄。
                   //3爲樂觀鎖定,直到用Update方法提交更新記錄時才鎖定記錄。
                   //4爲批量樂觀鎖定,允許修改多個記錄,只有調用UpdateBatch方法後才鎖定記錄。
  //*************************************************************************
  //當分頁的時候,計算TotalRecordCount和TotalPageCount
  //*************************************************************************
  this.TotalRecordCount=0;  //紀錄集總紀錄數,開始由於沒紀錄集,所以爲0
  this.PageSize=10;    //每頁最大紀錄數,默認爲10
  this.TotalPageCount=0;  //最大頁數. 
  //*************************************************************************
  this.CurrentPageID=1;  //當前頁碼,默認爲1
  this.CurrentPageTag="CurrentPageID";
  this.GotoPageName="";  //顯示紀錄的頁面名稱,默認爲當前頁面
  function GetDBPath()
  {
   switch (this.DBType)
   {
    case 1:
     this.DBPath="/data/#info.asp";
     break;
    case 2:
     this.DBPath="/data/#members.asp";
     break;
    case 3:
     this.DBPath="/data/#tradeinfo.asp";
     break;
    default:Response.Write("數據類別號有誤!");Response.End;break;
   }
   if (this.DBPath!=null)
   {
    this.ConnString="Provider=microsoft.jet.oledb.4.0;data source="+Server.MapPath(this.DBPath);
   }
  }
  this.DBOpen=DBOpen;
  function DBOpen()  //打開數據庫
  {
   try
   {
    this.Conn=Server.CreateObject("ADODB.Connection");
    this.Conn.Open(this.ConnString);
   }
   catch (e)
   {
    Response.Write("數據庫連接錯誤!");
    Response.End();
   }   
  }
  this.DBClose=DBClose;
  function DBClose()  //關閉數據庫
  {
   if (this.Conn!=null)
   {
    this.Conn.Close();
    this.Conn=null;
   }
  }
  this.GetRS=GetRS;
  function GetRS()  //產生一個數據集對象
  {
   if (this.Conn!=null)
   {
    var i=Request.QueryString(this.CurrentPageTag).Count;
    if (i>0)
    {
     this.CurrentPageID=parseInt(Request.QueryString(this.CurrentPageTag));
     if (this.CurrentPageID<=0)
     {
      this.DBClose();
      Response.Write("頁碼超出合法範圍!");
      Response.End();
     }
    }
    this.RS=Server.CreateObject("ADODB.RecordSet");
    this.RS.Open(this.SQLString,this.Conn,this.RSMoveType,this.RSLockType);
    this.TotalRecordCount=this.RS.RecordCount;
    this.TotalPageCount=Math.ceil(this.TotalRecordCount/this.PageSize);
    var EndPage=this.TotalPageCount;
    if (EndPage==0) EndPage=1;
    if (this.CurrentPageID>EndPage)
    {
     this.DBClose();
     Response.Write("頁碼超出合法範圍!");
     Response.End();
    }
   }    
   else
   {
    Response.Write("沒有連接到數據庫!");
    Response.End();
   }
  }
  this.CloseRS=CloseRS;
  function CloseRS() //關閉數據集對象
  {
   if (this.RS!=null)
   {
    this.RS.Close();
    this.RS=null;
   }
  }
  this.DBExecSQL=DBExecSQL;
  function DBExecSQL()  //執行SQL語句,用於執行添加、刪除、修改操作
  {
   if (this.Conn!=null)
   {
    this.Conn.Execute(this.SQLString);
   }
   else
   {
    Response.Write("沒有連接到數據庫!");
    Response.End();
   }
  }
  this.RSIsEmpty=RSIsEmpty;
  function RSIsEmpty()
  {
   if (this.RS!=null)
   {
    if ((this.RS.BOF) && (this.RS.EOF))
    {
     //RS is empty
     return true;
    }
    else
    {
     //RS not empty
     return false;
    }
   }
   else
   {
    Response.Write("沒有連接到數據庫!");
    Response.End();
   }   
  }
  this.SetPager=SetPager;
  function SetPager()
  {
   var PreviousPageID=this.CurrentPageID-1;
   var NextPageID=this.CurrentPageID+1;
   var HomePage=1;
   var EndPage=this.TotalPageCount;
   //************************************************************
   /*this.RS.MoveFirst();
   this.RS.Move((this.CurrentPageID-1)*this.PageSize,1);
   var j=0;
   while (!this.RS.eof && j<this.PageSize)
   {
    Response.Write(this.RS("type")+"<br>");
    j=j+1;
    this.RS.MoveNext();
   }*/
   //************************************************************   
   var PagerString="";
   PagerString+="<table width=/"100%/" height=/"25/"  border=/"0/" cellpadding=/"0/" cellspacing=/"0/" style=/"font-size:9pt/">";
   PagerString+="<tr>";
   PagerString+="<td align=/"right/" valign=/"middle/">合計 <strong><font color=/"#FF0000/">";
   PagerString+=this.TotalRecordCount;
   PagerString+="</font></strong> 個 | ";
   if (this.CurrentPageID==HomePage)
   {
    PagerString+="<A disabled>首頁</A> <A disabled>上一頁</A> ";
   }
   else
   {
    PagerString+="<A href="+this.GotoPageName+"?"+this.CurrentPageTag+"="+HomePage+">首頁</A> <A href="+this.GotoPageName+"?"+this.CurrentPageTag+"="+PreviousPageID+">上一頁</A> ";
   }
   if (this.CurrentPageID==EndPage)
   {
    PagerString+="<A disabled>下一頁</A> <A disabled>尾頁</A> </td>";
   }
   else
   {
    PagerString+="<A href="+this.GotoPageName+"?"+this.CurrentPageTag+"="+NextPageID+">下一頁</A> <A href="+this.GotoPageName+"?"+this.CurrentPageTag+"="+EndPage+">尾頁</A> </td>";
   }
   PagerString+="<td width=/"120/" align=/"center/" valign=/"middle/">頁次:<strong><font color=/"#FF0000/">";
   PagerString+=this.CurrentPageID;
   PagerString+="</font>/";
   PagerString+=this.TotalPageCount+"&nbsp;";
   PagerString+=this.PageSize+"</strong>個/頁 </td>"
   PagerString+="<td width=/"36/" align=/"right/" valign=/"middle/">轉到: </td>"
   PagerString+="<td width=/"76/" align=/"left/" valign=/"middle/">";
   PagerString+="<select size=1 name=CurrentPage style='font-size:9pt;width:60px' onchange=/"document.location=/'"+this.GotoPageName+"?"+this.CurrentPageTag+"=/'+this.options[this.selectedIndex].value/">";
   for (i=1;i<=this.TotalPageCount;i++)
   {
    if(this.CurrentPageID==i)
    {
     PagerString+="<option selected value="+i+">第"+i+"頁</option>";
    }
    else
    {
     PagerString+="<option value="+i+">第"+i+"頁</option>";
    }
   }
   PagerString+="</select>";
   PagerString+="</td>";
   PagerString+="</tr>";
   PagerString+="</table>" 
   if (EndPage>0)
   {
    return(PagerString);
   }
   else
   {
    return("");
   }
  }
 } 
%>
<%
//////////////////////////////////////////////////
//            //
//    字符串操作                                //
//               //
//////////////////////////////////////////////////
   function CutString(InputString,AppendString,CutLen)
  {
   InputString=String(InputString);
   AppendString=String(AppendString);
   var FactLen=0,TempString="",i;
   var Strlength=InputString.length;
   for (i=0;i<Strlength;i++)
   {
    if (InputString.charCodeAt(i)>255)
    {
     FactLen+=2;
    }
    else
    {
     FactLen+=1;
    }    
    if (FactLen>CutLen)
     break;    
    try
    {
     TempString+=InputString.substr(i,1);
    }
    catch (e)
    {
     break;
    }    
   }
   if (FactLen>CutLen)
   {
    TempString+=AppendString;
   }
   return TempString;
  }  
%>
<%
///////////////////////////////////////////////////
//
//  空格及回車的顯示                            //
//
//////////////////////////////////////////////////
  function AlignString(obj)
  {
   return String(obj).replace( /[/" "]/g,"&nbsp;").replace(/[/r]/g,"<br>");
  }
%>
<%
//////////////////////////////////////////////////
//            //
//    用Javascript實現的用戶身份驗證類            //
//               //
//////////////////////////////////////////////////
 function UserLogin()
 {
  this.UnameField="";  //用戶名字段名稱
  this.PwdField="";  //密碼字段名稱
  this.LevelField="";  //用戶級別字段名稱
  this.UserTableName="";  //存放用戶信息的表名稱
  this.uname="";  //用戶名
  this.pwd="";  //密碼
  this.SessionOfName="";
  this.SessionOfPwd="";
  this.SessionOfLevel="";
  this.CheckLogin=CheckLogin;  //驗證用戶是否登陸
  this.ErrorURL="";  //沒登陸時轉向的頁面
  this.OKURL="";  //登陸成功時轉向的頁面
  function CheckLogin()
  {
   var DBConn=new DBOperate();
   DBConn.DBType=0;
   DBConn.CurrentPageTag="#PID";
   DBConn.ConnString="Provider=microsoft.jet.oledb.4.0;data source="+Server.MapPath("/data/#members.asp");
   DBConn.DBOpen();
   DBConn.SQLString="Select * from "+this.UserTableName+" where "+this.UnameField+"='"+this.uname.replace( /[/']/g,"#").replace( /[/s]/g,"#")+"' and "+this.PwdField+"='"+this.pwd.replace( /[/']/g,"#").replace( /[/s]/g,"#")+"'";
   DBConn.GetRS();
   if (DBConn.RSIsEmpty()==true)
   {
    DBConn.DBClose();
    DBConn=null;
    if (this.ErrorURL!="")
     Response.Redirect(this.ErrorURL);
   }
   else
   {
    if (this.SessionOfName!="")
    {
     Session(this.SessionOfName)=String(DBConn.RS(this.UnameField));
    }
    if (this.SessionOfPwd!="")
    {
     Session(this.SessionOfPwd)=String(DBConn.RS(this.PwdField));
    }
    if (this.SessionOfLevel!="")
    {
     Session(this.SessionOfLevel)=String(DBConn.RS(this.LevelField));
    }
    DBConn.CloseRS();
    DBConn.DBClose();
    DBConn=null;
    if (this.OKURL!="")
     Response.Redirect(this.OKURL);
   }
  }
 }
%>

  測試頁面代碼如下:
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
<!--#include FILE="DBO.asp"-->
<%
var DBobj=new DBOperate();
DBobj.CurrentPageTag="PID";
DBobj.DBType=2;
DBobj.GetDBPath();
DBobj.DBOpen();
DBobj.SQLString="select * from members";
DBobj.PageSize=4;
DBobj.GetRS();
//********************************************************************
if (!DBobj.RSIsEmpty())
{
DBobj.RS.MoveFirst();
DBobj.RS.Move((DBobj.CurrentPageID-1)*DBobj.PageSize,1);
var j=0;
while (!DBobj.RS.eof && j<DBobj.PageSize)//
{
 Response.Write(DBobj.RS("name")+"<br>");
 j=j+1;
 DBobj.RS.MoveNext();
}
}
//*********************************************************************
Response.Write("<br>");
//*********************************************************************
Response.Write(DBobj.SetPager());   //分頁導航條高度爲25
//*********************************************************************
Response.Write(CutString("啊撒123嬌散件 aaaa","#",8));
var Uobj=new UserLogin();
Uobj.UnameField="uname";
Uobj.PwdField="upwd";
Uobj.LevelField="ulevel";
Uobj.UserTableName="uadmi";
Uobj.uname="sadmin";
Uobj.pwd="sadmin";
Uobj.OKURL="";
Uobj.ErrorURL="2.htm";
Uobj.SessionOfName="aaa";
DBobj.CloseRS();
DBobj.DBClose();
DBobj=null;
Uobj.CheckLogin();
Response.Write(Session(Uobj.SessionOfName));
%>
  具體效果把上面的代碼存成2個asp文件測試就知道了,不多說了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章