ado.net统一事务,及连接池管理(五)
来源:互联网 发布:腐植酸淘宝多少钱一吨 编辑:程序博客网 时间:2024/06/06 14:18
数据库参数配置类,代码如下:
===================================
namespace b2c.DB
{
using System;
using System.Collections;
using System.Diagnostics;
using System.Configuration;
using System.Xml;
using System.Collections.Specialized;
/// <summary>
/// 此类是数据库配置类,包含数据库连接串有关的配置信息。
///
///<newpara></newpara>
/// 这些配置信息必须放在Web.config(B/S架构)或是App.config(C/S架构)中,
/// 并且必须放在放在一个名为‘DatabaseConfig’的配置节中。
///
/// <newpara></newpara>
/// 在配置文件的configSections节点中增加如下配置节:
/// <!-- 数据库配置节 -->
/// <section name="DatabaseConfig" type="b2c.DB.DatabaseConfig, b2c"/>
///
/// <newpara></newpara>
/// 调用方法:
/// 1、调用本类的静态方法LoadConfig(只需调用一次)。
/// 2、读取本类的公开的属性。
///
/// <newpara></newpara>
/// 此配置节应包括如下信息:
/// 数据库服务器、数据库名称、数据库用户名、登录密码、最大数据库连接数、最小数据库连接数。
/// <DatabaseConfig>
/// <!--- 数据库SID -->
/// <add key="DataSource" value="hnpgc" />
/// <!--- 数据库用户名 -->
/// <add key="UserID" value="base" />
/// <!--- 登录密码 -->
/// <add key="Password" value="base" />
/// </DatabaseConfig>
/// </summary>
public class DatabaseConfig : IConfigurationSectionHandler
{
/// <summary>
/// 如果应用此配置,则需要在配置文件中,以此作为配置节名称。
/// </summary>
public const string CONFIG_SECTION_NAME = "DatabaseConfig";
private static bool isConfigLoad = false; //标志配置是否加载
#region 数据库配置项关键字
//数据库连接串配置项关键字
private const string DATA_SOURCE = "DataSource";
private const string USER_ID = "UserID";
private const string USER_PASSWORD = "Password";
private const string MAX_POOL_SIZE = "MaxPoolSize";
private const string MIN_POOL_SIZE = "MinPoolSize";
private const string CONNECT_TIME_OUT = "ConnectTimeOut";
#endregion
#region 配置项默认值
//数据库配置默认值
private const string DATA_SOURCE_DEFAULT = "hnpgc";
private const string USER_ID_DEFAULT = "base";
private const string USER_PASSWORD_DEFAULT = "base";
private const string MAX_POOL_SIZE_DEFAULT = "50";
private const string MIN_POOL_SIZE_DEFAULT = "5";
private const string CONNECT_TIME_OUT_DEFAULT = "15";
#endregion
#region 数据库配置项值
//数据库连接串
private static string dataSource;
private static string userID;
private static string password;
private static string maxPoolSize;
private static string minPoolSize;
private static string connectTimeOut;
#endregion
/// <summary>
/// 加载与该配置节有关的配置信息。
/// </summary>
public static void LoadConfig()
{
//如果配置未加载则去加载,并设置标志。
if (!isConfigLoad)
{
System.Configuration.ConfigurationSettings.GetConfig(CONFIG_SECTION_NAME);
isConfigLoad = true;
}
}
/// <summary>
/// 在web.config或app.config中设置该类及程序集的信息后,
/// 该方法不必手工调用,在应用启动后被自动调用。
/// </summary>
/// <param name="parent"></param>
/// <param name="configContext"></param>
/// <param name="section"></param>
/// <returns></returns>
public Object Create(Object parent, object configContext, XmlNode section)
{
NameValueCollection settings;
try
{
NameValueSectionHandler baseHandler = new NameValueSectionHandler();
settings = (NameValueCollection)baseHandler.Create(parent, configContext, section);
}
catch
{
settings = null;
}
if (settings == null)
{
dataSource = DATA_SOURCE_DEFAULT;
userID = USER_ID_DEFAULT;
password = USER_PASSWORD_DEFAULT;
connectTimeOut = CONNECT_TIME_OUT_DEFAULT;
minPoolSize = MIN_POOL_SIZE_DEFAULT;
maxPoolSize = MAX_POOL_SIZE_DEFAULT;
}
else
{
dataSource = ReadSetting(settings, DATA_SOURCE, DATA_SOURCE_DEFAULT);
userID = ReadSetting(settings, USER_ID, USER_ID_DEFAULT);
password = ReadSetting(settings, USER_PASSWORD, USER_PASSWORD_DEFAULT);
connectTimeOut = ReadSetting(settings, CONNECT_TIME_OUT, CONNECT_TIME_OUT_DEFAULT);
minPoolSize = ReadSetting(settings, MIN_POOL_SIZE, MIN_POOL_SIZE_DEFAULT);
maxPoolSize = ReadSetting(settings, MAX_POOL_SIZE, MAX_POOL_SIZE_DEFAULT);
}
return null;
}
/// <summary>
/// 从配置集合中返回匹配配置项的值
/// </summary>
/// <param name="settings">配置集合</param>
/// <param name="key">配置项</param>
/// <param name="defaultValue">默认值</param>
/// <returns></returns>
public static string ReadSetting(NameValueCollection settings, string key, string defaultValue)
{
try
{
Object setting = settings[key];
return (setting == null) ? defaultValue : (string)setting;
}
catch
{
return defaultValue;
}
}
/// <summary>
/// 数据源,一般指数据库SID。
/// </summary>
public static string DataSource
{
get
{
return dataSource;
}
}
/// <summary>
/// 数据库用户名。
/// </summary>
public static string UserID
{
get
{
return userID;
}
}
/// <summary>
/// 数据库密码。
/// </summary>
public static string Password
{
get
{
return password;
}
}
/// <summary>
/// 连接池中最大的连接数,默认值为 100个。
/// </summary>
public static int MaxPoolSize
{
get
{
if (maxPoolSize.Equals(string.Empty))
{
maxPoolSize = MAX_POOL_SIZE_DEFAULT;
}
return int.Parse(maxPoolSize);
}
}
/// <summary>
/// 连接池中最小的连接数,默认值为 1个。
/// </summary>
public static int MinPoolSize
{
get
{
if (minPoolSize.Equals(string.Empty))
{
minPoolSize = MIN_POOL_SIZE_DEFAULT;
}
return int.Parse(minPoolSize);
}
}
/// <summary>
/// 等待连接打开的时间(以秒为单位),默认值为 15 秒。
/// </summary>
public static int ConnectTimeOut
{
get
{
if (connectTimeOut.Equals(string.Empty))
{
connectTimeOut = CONNECT_TIME_OUT_DEFAULT;
}
return int.Parse(connectTimeOut);
}
}
}
}
- ado.net统一事务,及连接池管理(五)
- ado.net统一事务,及连接池管理(一)
- ado.net统一事务,及连接池管理(二)
- ado.net统一事务,及连接池管理(三)
- ado.net统一事务,及连接池管理(四)
- 五分钟让你全面理解ADO.NET连接池
- 五分钟让你全面理解ADO.NET连接池
- ADO.NET连接池
- ADO.NET:连接池
- ADO.NET连接池
- ADO.net 连接池
- ADO.Net连接池
- ado.net 连接池
- ADO.NET连接池
- ADO.NET连接池
- ADO.NET连接池
- ADO.net连接数据库步骤及分析
- ADO.NET连接数据库,及基本操作
- MPLS网络的应用
- ado.net统一事务,及连接池管理(二)
- 我的编程之路(二)
- ado.net统一事务,及连接池管理(三)
- ado.net统一事务,及连接池管理(四)
- ado.net统一事务,及连接池管理(五)
- link 方式安装 eclipse 插件
- 用Photoshop制作1寸和2寸的照片
- 列举进程
- 用到的串口通信类和窗体应用
- MailEnable的IMAP服务UNSUBSCRIBE命令超长参数溢出
- 传感器(c#2.0)serialPort串口通讯
- jabber/XMPP协议在嵌入系统透NAT中的应用
- Linux平台socks5代理