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;
}
}
}
%>