本帖最后由 xiangjianlin 于 2010-12-06 12:41:59 编辑

解决方案 »

  1.   


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Configuration;
    using System.Data;
    using System.Data.OleDb;namespace   XXX
    {
        /// <summary>
        /// OLEDB查询辅助类
        /// </summary>
        public abstract class OleDbHelper
        {
            //数据库连接字符串
            public static readonly string ConnectionString = ConfigurationManager.AppSettings["OLEDBConnStr"];        #region 公共方法        /// <summary>
            /// 执行 SQL 语句(如 INSERT、DELETE、UPDATE 和 SET 语句等命令)。
            /// </summary>
            /// <param name="connectionString">连接字符串</param>
            /// <param name="cmdType">指定如何解释命令</param>
            /// <param name="cmdText">要对数据源执行的 SQL 语句或存储过程</param>
            /// <param name="commandParameters">命令的参数</param>
            /// <returns>受影响的行数</returns>
            public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params OleDbParameter[] commandParameters)
            {            OleDbCommand cmd = new OleDbCommand();            using (OleDbConnection conn = new OleDbConnection(connectionString))
                {
                    PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
                    int val = cmd.ExecuteNonQuery();
                    cmd.Parameters.Clear();
                    return val;
                }
            }        /// <summary>
            /// 执行 SQL 语句(如 INSERT、DELETE、UPDATE 和 SET 语句等命令)。
            /// </summary>
            /// <param name="connection">到数据源的连接</param>
            /// <param name="cmdType">指定如何解释命令</param>
            /// <param name="cmdText">要对数据源执行的 SQL 语句或存储过程</param>
            /// <param name="commandParameters">命令的参数</param>
            /// <returns>受影响的行数</returns>
            public static int ExecuteNonQuery(OleDbConnection connection, CommandType cmdType, string cmdText, params OleDbParameter[] commandParameters)
            {            OleDbCommand cmd = new OleDbCommand();            PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
                int val = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                return val;
            }        /// <summary>
            /// 执行指定的事务。
            /// </summary>
            /// <param name="trans">要在数据源执行的 SQL 事务</param>
            /// <param name="cmdType">指定如何解释命令</param>
            /// <param name="cmdText">要对数据源执行的 SQL 语句或存储过程</param>
            /// <param name="commandParameters">命令的参数</param>
            /// <returns>受影响的行数</returns>
            public static int ExecuteNonQuery(OleDbTransaction trans, CommandType cmdType, string cmdText, params OleDbParameter[] commandParameters)
            {
                OleDbCommand cmd = new OleDbCommand();
                PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
                int val = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                return val;
            }
            /// <summary>
            /// 获取数据记录读取对象
            /// </summary>
            /// <param name="connectionString">连接字符串</param>
            /// <param name="cmdType">指定如何解释命令</param>
            /// <param name="cmdText">要对数据源执行的 SQL 语句或存储过程</param>
            /// <param name="commandParameters">命令的参数</param>
            /// <returns>数据记录读取对象</returns>
            public static OleDbDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params OleDbParameter[] commandParameters)
            {
                OleDbCommand cmd = new OleDbCommand();
                OleDbConnection conn = new OleDbConnection(connectionString);            // we use a try/catch here because if the method throws an exception we want to 
                // close the connection throw code, because no datareader will exist, hence the 
                // commandBehaviour.CloseConnection will not work
                try
                {
                    PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
                    OleDbDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                    cmd.Parameters.Clear();
                    return rdr;
                }
                catch
                {
                    conn.Close();
                    throw;
                }
            }        /// <summary>
            /// 从数据源中检索单个值
            /// </summary>
            /// <param name="connectionString">连接字符串</param>
            /// <param name="cmdType">指定如何解释命令</param>
            /// <param name="cmdText">要对数据源执行的 SQL 语句或存储过程</param>
            /// <param name="commandParameters">命令的参数</param>
            /// <returns>检索的值</returns>
            public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params OleDbParameter[] commandParameters)
            {
                OleDbCommand cmd = new OleDbCommand();            using (OleDbConnection connection = new OleDbConnection(connectionString))
                {
                    PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
                    object val = cmd.ExecuteScalar();
                    cmd.Parameters.Clear();
                    return val;
                }
            }        /// <summary>
            /// 从数据源中检索单个值
            /// </summary>
            /// <param name="connection">到数据源的连接</param>
            /// <param name="cmdType">指定如何解释命令</param>
            /// <param name="cmdText">要对数据源执行的 SQL 语句或存储过程</param>
            /// <param name="commandParameters">命令的参数</param>
            /// <returns>检索的值</returns>
            public static object ExecuteScalar(OleDbConnection connection, CommandType cmdType, string cmdText, params OleDbParameter[] commandParameters)
            {            OleDbCommand cmd = new OleDbCommand();            PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
                object val = cmd.ExecuteScalar();
                cmd.Parameters.Clear();
                return val;
            }        #endregion        #region 私有方法        /// <summary>
            /// 准备一个执行的命令
            /// </summary>
            /// <param name="cmd">OleDb命令对象</param>
            /// <param name="conn">OleDb连接对象</param>
            /// <param name="trans">Sql事务对象</param>
            /// <param name="cmdType">命令类型,如:存储过程或文本</param>
            /// <param name="cmdText">命令文本,如:SQL语句</param>
            /// <param name="cmdParms">命令中使用的OleDb参数</param>
            private static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, CommandType cmdType, string cmdText, OleDbParameter[] cmdParms)
            {
                if (conn.State != ConnectionState.Open)
                    conn.Open();            cmd.Connection = conn;
                cmd.CommandText = cmdText;            if (trans != null)
                    cmd.Transaction = trans;            cmd.CommandType = cmdType;            if (cmdParms != null)
                {
                    foreach (OleDbParameter parm in cmdParms)
                        cmd.Parameters.Add(parm);
                }
            }        #endregion    }
    }
      

  2.   

    很多
    看看微软企业库
    LINQ