日期:2014-05-18  浏览次数:20458 次

征求各位用的SqlHelper、AccessHelper、MySqlHelper、OracleHelper、XMLHelper、FileHelper。
如题。
想把他们集成起来,另外欢迎各位在上面扩展范型数据集合的返回和缓存功能的加入。
分不够再加。

------解决方案--------------------
这是我(海关)项目中常用到的一个SqlHelper类,里面用到的数据集序列化,连接池的优化,缓存等技术...........

好像大了点,
C# code

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Transactions;

namespace ChinaCustoms.Application.HD2007.DB
{
    /// <summary>
    /// 数据库操作类.
    /// </summary>
    /// <remarks>
    /// 密封类,以防止被继承.
    /// 该类中所有成员均为static.
    /// </remarks>
    public sealed class SqlDatabase
    {
        /// <summary>
        /// 私有构造函数,以防止该类的实例化.
        /// </summary>
        private SqlDatabase() { }

        /// <summary>
        /// 获取数据库连接对象
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <returns>IDbConnection对象</returns>
        public static IDbConnection GetConnectionObject(string connectionString)
        {
            return new SqlConnection(connectionString);//不一定new一个新的SqlConnection,可能会去连接池取.
        }

        #region ExecuteNonQuery
        /// <summary>
        /// 该方法可用以执行不需要输入参数的sql语句、存储过程.
        /// </summary>
        /// <remarks>
        /// 关于该方法的返回值:
        /// 1.sql语句
        /// 对于insert、update、delete语句,将返回命令所影响的行数.
        /// 对于select等所有其他类型的语句,将返回-1.
        /// 如果发生会滚,也将返回-1.
        /// 2.存储过程
        /// 同上
        /// 该方法的推荐应用场景:
        /// 1.用于执行非select查询
        /// </remarks>
        /// <param name="connectionObject">用于数据库连接的字符串或者直接是连接对象.</param>
        /// <param name="commandType">命令类型,为System.Data.CommandType枚举类型.</param>
        /// <param name="commandText">命令</param>
        /// <returns>受影响的行数</returns>
        public static int ExecuteNonQuery(object connectionObject, CommandType commandType, string commandText)
        {
            return ExecuteNonQuery(connectionObject, commandType, commandText, null);
        }

        /// <summary>
        /// 该方法可用以执行不需要输入参数的sql语句、存储过程.
        /// </summary>
        /// <remarks>
        /// 关于该方法的返回值:
        /// 1.sql语句
        /// 对于insert、update、delete语句,将返回命令所影响的行数.
        /// 对于select等所有其他类型的语句,将返回-1.
        /// 如果发生会滚,也将返回-1.
        /// 2.存储过程
        /// 同上
        /// 该方法的推荐应用场景:
        /// 1.用于执行非select查询
        /// </remarks>
        /// <param name="connectionObject">用于数据库连接的字符串或者直接是连接对象.</param>
        /// <param name="commandType">命令类型,为System.Data.CommandType枚举类型.</param>
        /// <param name="commandText">命令</param>
        /// <param name="commandTimeout">在终止执行命令的尝试并生成错误之前的等待时间.</param>
        /// <returns>受影响的行数</returns>
        public static int ExecuteNonQuery(object connectionObject, CommandType commandType, string commandText, int commandTimeout)
        {
            return ExecuteNonQuery(connectionObject, commandType, commandText, commandTimeout, null);
        }

        /// <summary>
        /// 该方法可用以执行需要输入参数的sql语句、存储过程.
        /// 通过该方法可得到命令的输出参数、@RETURN_VALUE.这些值通过方法的输入参数ParamCollection返回.
        /// </summary>
        /// <remarks>
        /// 关于该方法的返回值:
        /// 1.sql语句
        /// 对于insert、update、delete语句,将返回命令所影响的行数.
        /// 对于select等所有其他类型的语句,将返回-1.
        /// 如果发生会滚,也将返回-1.
        /// 2.存储过程
        /// 同上
        /// 该方法的推荐应用场景:
        /// 1.用于执行非select查询
        /// 2.需要返回命令的输出参数、@RETURN_VALUE的时候
        /// </remarks>
        /// <param name="connectionObject">用于数据库连接的字符串或者直接是连接对象.</param>
        /// <param name="commandType">命令类型,为System.Data.CommandType枚举类型.</param>