2007年7月25日 Database开发小记(昨天)

asp在很多时候,是在和数据库中的信息进行交互操作,而对于数据库的操作也相对较为频烦,为了避免重复劳动,所以,我把一部分数据库操作的方法都集中在一起,写成了一个静态类!在使用时直接调用即可

Databse主要分为

    1.Configuration:Databse操作的部分配置信息

    2.Connection:包含了一部分数据库连接操作,返正一个对应数据库的Connection对象
        参数Database.Configuration.CURRENT_DATABASE决定了当前选择那一个数据库连接

   3.Statement:这是一个需要New的对象,他只进行一样操作,那就是执行SQL,目前只写了两个方法Execute和ExecuteQuery,两者之间的区别就是Execute使用了事务处理方式,且无返回记录集,适用于insert,update,delete操作,而ExecuteQuery则在执行后会返回一个记录集,适用于Select操作。目前暂时这样设定了,以前有什么需求再加进去了

     在这里使用了Class.create();借鉴了modello.js中的JSOO实现方式

<%
/*
    ************************************************************************
        文  件: /Function/Database.asp
        作  者: hnyashiro
        时  间: 2007年7月24日
        类说明:实现ASP与ADO之间的接口,将部分数据操作进行封装,简化用户操作
        包括:数据库连接对象Connection[可以直接使用其方法,无需声明实例]
             数据库连接配置Configuration[请直接调用]
             数据库操作对象Statement[需要声明其对象的实例后调用]
    ***********************************************************************
*/

    
var  Database  =   {
        Configuration:
{
            AccessDBPath:
"/Data/db.mdb",
            SRV_IPAdd:
"127.0.0.1",
            SRV_UName:
"username",
            SRV_UPass:
"userpass",
            SRV_DBName:
"databasename",
            CURRENT_DATABASE:
1
        }

        ,
        Connection:
{
            getAccess:
function(){
                
try{
                    
var Conn = Server.CreateObject("ADODB.Connection");
                    
var strConn = "DBQ="+Server.MapPath(Database.Configuration.AccessDBPath)+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};";
                    Conn.open(strConn);
                    
return Conn;
                }
catch(JSException){
                    JSException.description 
= "Database.Connection.getAccess:连接Access数据库时错误!--"+JSException.description
                    
throw JSException;
                }

            }

            ,
            getSQLServer:
function(){
                
try{
                    
var Conn = Server.CreateObject("ADODB.Connection");
                    
var strConn = "driver={SQL Server};server="+Database.Configuration.SRV_IPAdd+";db="+Database.Configuration.SRV_DBName+";uid="+Database.Configuration.SRV_UName+";pwd="+Database.Configuration.SRV_UPass;
                    Conn.Open(strConn);
                    
return Conn;
                }
catch(JSException){
                    JSException.description 
= "Database.Connection.getSQLServer:连接SQLServer数据库时错误!--"+JSException.description
                    
throw JSException;                    
                }

            }

            ,
            getMySQL:
function(){
                
return "MySQL Connection String!"
            }
,
            getOracle:
function(){
                
return "Oracle Connection String!"
            }
,
            getSybase:
function(){
                
return "Sybase Connection String!"
            }
,
            getDatabaseConnection:
function(){
                
switch(Database.Configuration.CURRENT_DATABASE){
                    
case 0:
                        
return Database.Connection.getAccess();
                        
break;
                    
case 1:
                        
return Database.Connection.getSQLServer();
                        
break;
                    
case 2:
                        
return Database.Connection.getMySQL();
                        
break;
                    
case 3:
                        
return Database.Connection.getOracle();
                        
break;
                    
case 4:
                        
return Database.Connection.getSybase();
                }

            }

        }

    }

    
    Database.Statement 
=  Class.create();
    Database.Statement.construct
= function () {
        
this.ADORSCLSID = "ADODB.Recordset";
        
this.Initialize=function(){};
        
        
this.Execute=function(strSQL){
            
try{
                
if(typeof strSQL!='string'){
                    
throw new Error("(Database.Statement)Instance.Execute SQL语句必须为字符串");
                }

                
var Conn = Database.Connection.getDatabaseConnection();
                Conn.BeginTrans;
                Conn.Execute(sSQL);
                Conn.CommitTrans;
                
return true;    
            }
catch(DBException){
                Conn.RollBackTrans;
                DBException.source 
= "";
                DBException.description 
= "(Database.Statement)Instance.Execute发生错误!--"+DBException.description;
                
throw DBException;
            }


            
return false;
        }

        
this.ExecuteQuery=function(strSQL,intCursorType,intLockType){
            
try{
                
if(typeof strSQL!='string'){
                    
throw new Error("(Database.Statement)Instance.ExecuteQuery发生错误!");
                }

                
var rs = Server.CreateObject(this.ADORSCLSID);
                rs.CursorType 
= intCursorType || 3;
                rs.LockType 
= intLockType || 3;
                
var Conn = Database.Connection.getDatabaseConnection();
                rs 
= Conn.Execute(strSQL);
                
if(rs.EOF && rs.BOF){
                    
return null;
                }

                
return rs;
            }
catch(e){
                e.description 
= "(Database.Statement)Instance.ExecuteQuery发生错误!--"+e.description;
                
throw e;
            }

        }

    }

%>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值