??xml version="1.0" encoding="utf-8" standalone="yes"?>
/*
name: Map.js
author: WindDC
date: 2006-10-27
content: 本程序用JS实现cLJAVA中MAP对像的功?br />*/
function Node(key,value){//键值对对象
this.key=key;
this.value=value;
}
function Map(){//Mapc?br /> this.nodes=new Array();
}
Map.prototype.put=function(key,value){//往容器中加入一个键值对
for(var i=0;i<this.nodes.length;i++)
if(this.nodes[i].key==key){//如果键值已存在Q则putҎ为更新已有数?br /> this.nodes[i].value=value;
return;
}
var node=new Node(key,value);
this.nodes.push(node);
return;
}//put
Map.prototype.get=function(key){//获取指定键的?br /> for(var i=0;i<this.nodes.length;i++)
if(this.nodes[i].key==key)
return this.nodes[i].value;
return null;
}//get
Map.prototype.size=function(){//获取容器中对象的个数
return this.nodes.length;
}//size
Map.prototype.clear=function(){//清空容器
while(this.nodes.length>0)
this.nodes.pop();
}//clear
Map.prototype.remove=function(key){//删除指定?br /> for(var i=0;i<this.nodes.length;i++)
if(this.nodes[i].key==key){
if(i>0)
var nodes1=this.nodes.concat(this.nodes.slice(0,i-1),this.nodes.slice(i+1));
else//删除的是W一个元?br /> var nodes1=nodes.slice(1);
this.nodes=nodes1;
}
}//remove
Map.prototype.isEmpty=function(){//是否为空
if(this.nodes.length==0)
return true;
else
return false;
}//isEmpty
Map.prototype.toString=function(){
var str="[";
for(var i=0;i<this.nodes.length;i++){
if(i<this.nodes.length-1)
str=str+this.nodes[i].key+",";
else
str=str+this.nodes[i].key;
}
str=str+"]";
return str;
}
/// <summary>
/// DbConnectionPool 的摘要说?br />/// </summary>
namespace dbopr
{
public class DbConnectionPool
{
//定义存放数据库链接的队列
private static Queue connections=new Queue();
//数据库参?br /> private static string ConnString = ""; //链接字符?/p>
//链接池参?br /> private static int InitSize = 20; //初始化链接池大小
private static int MaxSize = 100; //最大链接数
private static int QueueSize = 50; //队列中最大维护的链接?br /> private static int ConnNum = 0; //pȝl护的链接L
//定义数据库类型,1表示为SqlServer数据库,2表示其它的OLE DBQ默认ؓSqlServer
private static int DbType = 1;
public static int DbType
{
set
{
DbType = value;
}
}
private DbConnectionPool()
{
try{
ConnString = Configuration.connectionStrings["DbSource"].connectionString;
InitSize = int.Parse(Configuration.connectionStrings["InitSize"].connectionString);
MaxSize = int.Parse(Configuration.connectionStrings["MaxSize"].connectionString);
QueueSize = int.Parse(Configuration.connectionStrings["QueueSize"].connectionString);
DbType = int.Parse(Configuration.connectionStrings["DbType"].connectionString);
initPool();
}
catch(Exception e) {
}
}
//初始化链接池
private static void initPool(){
int i;
for (i = 1; i <= InitSize; i++) {
if (DbType == 1)
connections.Enqueue(newSqlConn());
else
connections.Enqueue(newOleConn());
}
}
//获取一个Sql Server链接对象
private static SqlConnection newSqlConn()
{
ConnNum++;
return new SqlConnection(ConnString);
}
//获取一个OLE DB链接对像
private static OleDbConnection newOleConn()
{
ConnNum++;
return new OleDbConnection(ConnString);
}
//获取一个数据库链接
public static IDbConnection getConn() {
if (connections.Count == 0) //如果队列中链接用完,则新Z个链接放入队?br /> {
if (ConnNum > MaxSize) //如果当前zd链接辑ֈ最大,则等待链?br /> return null;
else
{
if (DbType == 1)
connections.Enqueue(newSqlConn());
else
connections.Enqueue(newOleConn());
return connections.Dequeue();
}
}
else
return connections.Dequeue();
}
//释放一个活q链?br /> public static void reConn(IDbConnection conn) {
if (connections.Count > QueueSize) //如果队列中元素个数已辑ֈ最大,则关闭链?br /> conn.Close();
else
connections.Enqueue(conn);
}
//销毁链接池
public static void ClearPool() {
while(connections.Count>0)
(IDbConnection)connections.Dequeue().Close();
}
}
}
2.链接生成c?br />using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Configuration;
using System.Web;
/// <summary>
/// DbConn 的摘要说?br />/// </summary>
namespace dbopr
{
public class DbConnection
{
private static IDbConnection conn;
public DbConnection()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public static SqlConnection getSqlConn()
{
//获取链接池中的Sql Server的链?br /> conn = DbConnectionPool.getConn();
return (SqlConnection)conn;
}
public static OleDbConnection getOleConn() {
//获取其它OLE DB的链?br /> conn = DbConnectionPool.getConn();
return (OleDbConnection)conn;
}
public static void Close() {
//攑֛用过的链?br /> DbConnectionPool.reConn(conn);
}
}
}