1. /// <summary>  
  2.     /// 操作数据库存储过程类  
  3.     /// </summary>  
  4.     public class ExecProc  
  5.     {  
  6.         //取出数据库连接字符串  
  7.         //public static readonly string conStr = ConfigurationManager.AppSettings["ConnectionString"];  
  8.         public static readonly string conStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;  
  9.  
  10.         /// <summary>  
  11.         /// 得到数据库连接对象  
  12.         /// </summary>  
  13.         /// <returns>数据库连接对象</returns>  
  14.         public static SqlConnection GetConObject()  
  15.         {  
  16.             return new SqlConnection(conStr);  
  17.         }  
  18.  
  19.         /// <summary>  
  20.         /// 执行操作数据库的存储过程  
  21.         /// </summary>  
  22.         /// <param name="procName">存储过程名称</param>  
  23.         /// <returns>存储过程执行后所影响的行数</returns>  
  24.         public static int ExecuteNonQuery(string procName)  
  25.         {  
  26.             SqlCommand cmd = new SqlCommand();  
  27.  
  28.             using (SqlConnection con = GetConObject())  
  29.             {  
  30.                 CreateCommand(cmd, con, null, procName, null);  
  31.                 int val = cmd.ExecuteNonQuery();  
  32.                 cmd.Parameters.Clear();  
  33.                 cmd.Dispose();  
  34.                 return val;  
  35.             }  
  36.         }  
  37.  
  38.         /// <summary>  
  39.         /// 执行操作数据库的存储过程   
  40.         /// </summary>  
  41.         /// <param name="procName">存储过程名称</param>  
  42.         /// <param name="cmdParms">存储过程所使用的参数</param>  
  43.         /// <returns>存储过程执行后所影响的行数</returns>  
  44.         public static int ExecuteNonQuery(string procName, SqlParameter[] cmdParms)  
  45.         {  
  46.             SqlCommand cmd = new SqlCommand();  
  47.  
  48.             using (SqlConnection con = GetConObject())  
  49.             {  
  50.                 CreateCommand(cmd, con, null, procName, cmdParms);  
  51.                 int val = cmd.ExecuteNonQuery();  
  52.                 cmd.Parameters.Clear();  
  53.                 cmd.Dispose();  
  54.                 return val;  
  55.             }  
  56.         }  
  57.  
  58.          
  59.         /// <summary>  
  60.         /// 执行读数据集操作,以DataReader的形式返回  
  61.         /// </summary>  
  62.         /// <param name="procName">存储过程名称</param>  
  63.         /// <param name="cmdParms">存储过程所使用的参数</param>  
  64.         /// <returns>DataReader对象</returns>  
  65.         public static SqlDataReader ExecuteReader(string procName, SqlParameter[] cmdParms)  
  66.         {  
  67.             SqlCommand cmd = new SqlCommand();  
  68.             SqlConnection con = GetConObject();  
  69.  
  70.             try 
  71.             {  
  72.                 CreateCommand(cmd, con, null, procName, cmdParms);  
  73.                 SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
  74.                 cmd.Parameters.Clear();  
  75.                 return dr;  
  76.             }  
  77.             catch (Exception ex)  
  78.             {  
  79.                 cmd.Dispose();  
  80.                 Close(con);  
  81.                 throw ex;  
  82.             }  
  83.         }  
  84.  
  85.         /// <summary>  
  86.         /// 执行读数据集操作,以DataReader的形式返回  
  87.         /// </summary>  
  88.         /// <param name="procName">存储过程名称</param>  
  89.         /// <returns>DataReader对象</returns>  
  90.         public static SqlDataReader ExecuteReader(string procName)  
  91.         {  
  92.             SqlCommand cmd = new SqlCommand();  
  93.             SqlConnection con = GetConObject();  
  94.  
  95.             try 
  96.             {  
  97.                 CreateCommand(cmd, con, null, procName, null);  
  98.                 SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
  99.                 cmd.Parameters.Clear();  
  100.                 return dr;  
  101.             }  
  102.             catch (Exception ex)  
  103.             {  
  104.                 cmd.Dispose();  
  105.                 Close(con);  
  106.                 throw ex;  
  107.             }  
  108.         }  
  109.  
  110.         /// <summary>  
  111.         /// 执行读数据集操作,以DataSet的形式返回  
  112.         /// </summary>  
  113.         /// <param name="procName">存储过程名称</param>  
  114.         /// <param name="cmdParms">存储过程所使用的参数</param>  
  115.         /// <returns>DataSet对象</returns>  
  116.         public static DataSet ExecuteDataSet(string procName, SqlParameter[] cmdParms)  
  117.         {  
  118.             SqlCommand cmd = new SqlCommand();  
  119.             SqlConnection con = GetConObject();  
  120.             DataSet ds = new DataSet();  
  121.  
  122.             try 
  123.             {  
  124.                 CreateCommand(cmd, con, null, procName, cmdParms);  
  125.                 SqlDataAdapter da = new SqlDataAdapter();  
  126.                 da.SelectCommand = cmd;  
  127.                 da.Fill(ds);  
  128.                 cmd.Parameters.Clear();  
  129.                 return ds;  
  130.             }  
  131.             catch (Exception ex)  
  132.             {  
  133.                 throw ex;  
  134.             }  
  135.             finally 
  136.             {  
  137.                 cmd.Dispose();  
  138.                 Close(con);  
  139.             }  
  140.         }  
  141.  
  142.         public static string ExecuteValue(string procName, SqlParameter[] cmdParms)  
  143.         {  
  144.             SqlCommand cmd = new SqlCommand();  
  145.             SqlConnection con = GetConObject();  
  146.             DataSet ds = new DataSet();  
  147.  
  148.             try 
  149.             {  
  150.                 CreateCommand(cmd, con, null, procName, cmdParms);  
  151.                 SqlDataAdapter da = new SqlDataAdapter();  
  152.                 da.SelectCommand = cmd;  
  153.                 da.Fill(ds);  
  154.                 cmd.Parameters.Clear();  
  155.                 return ds.Tables[0].Rows[0][0].ToString();  
  156.             }  
  157.             catch (Exception ex)  
  158.             {  
  159.                 throw ex;  
  160.             }  
  161.             finally 
  162.             {  
  163.                 cmd.Dispose();  
  164.                 Close(con);  
  165.             }  
  166.         }  
  167.  
  168.  
  169.         /// <summary>  
  170.         /// 执行读数据集操作,以DataSet的形式返回  
  171.         /// </summary>  
  172.         /// <param name="procName">存储过程名称</param>  
  173.         /// <returns>DataReader对象</returns>  
  174.         public static DataSet ExecuteDataSet(string procName)  
  175.         {  
  176.             SqlCommand cmd = new SqlCommand();  
  177.             SqlConnection con = GetConObject();  
  178.             DataSet ds = new DataSet();  
  179.  
  180.             try 
  181.             {  
  182.                 CreateCommand(cmd, con, null, procName, null);  
  183.                 SqlDataAdapter da = new SqlDataAdapter();  
  184.                 da.SelectCommand = cmd;  
  185.                 da.Fill(ds);  
  186.                 cmd.Parameters.Clear();  
  187.                 return ds;  
  188.             }  
  189.             catch (Exception ex)  
  190.             {  
  191.                 throw ex;  
  192.             }  
  193.             finally 
  194.             {  
  195.                 cmd.Dispose();  
  196.                 Close(con);  
  197.             }  
  198.         }  
  199.  
  200.         /// <summary>  
  201.         /// 创建数据库执行命令  
  202.         /// </summary>  
  203.         /// <param name="cmd">数据库执行命令对象</param>  
  204.         /// <param name="con">数据库连接对象</param>  
  205.         /// <param name="trans">数据库事务对象</param>  
  206.         /// <param name="procName">存储过程名称</param>  
  207.         /// <param name="cmdParms">存储过程所使用的参数数组</param>  
  208.         public static void CreateCommand(SqlCommand cmd, SqlConnection con, SqlTransaction trans, string procName, SqlParameter[] cmdParms)  
  209.         {  
  210.             if (con.State != ConnectionState.Open)  
  211.                 con.Open();  
  212.  
  213.             cmd.Connection = con;  
  214.             cmd.CommandText = procName;  
  215.  
  216.             if (trans != null)  
  217.             {  
  218.                 cmd.Transaction = trans;  
  219.             }  
  220.  
  221.             cmd.CommandType = CommandType.StoredProcedure;  
  222.  
  223.             if (cmdParms != null)  
  224.             {  
  225.                 foreach (SqlParameter parm in cmdParms)  
  226.                     cmd.Parameters.Add(parm);  
  227.             }  
  228.         }  
  229.         /// <summary>  
  230.         /// --- LG  
  231.         /// </summary>  
  232.         /// <param name="procName"></param>  
  233.         /// <param name="cmdParms"></param>  
  234.         /// <returns></returns>  
  235.         public static int ExecuteReturnValue(string procName, SqlParameter[] cmdParms)  
  236.         {  
  237.             SqlConnection con = GetConObject();  
  238.             if (con.State != ConnectionState.Open)  
  239.                 con.Open();  
  240.             SqlCommand myCommand = new SqlCommand(procName,con);  
  241.             myCommand.CommandType = CommandType.StoredProcedure;  
  242.             if (cmdParms.Length != 0)  
  243.             {  
  244.                 for (int i = 0; i < cmdParms.Length; i++)  
  245.                 {  
  246.                     myCommand.Parameters.Add(cmdParms[i]);  
  247.                 }  
  248.             }  
  249.             myCommand.Parameters["@return"].Direction = ParameterDirection.ReturnValue;  
  250.             myCommand.ExecuteNonQuery();  
  251.             return Convert.ToInt32(myCommand.Parameters["@return"].Value.ToString());  
  252.         }  
  253.  
  254.  
  255.         /// <summary>  
  256.         /// 关闭数据库连接  
  257.         /// </summary>  
  258.         /// <param name="myConn">数据库连接对象</param>  
  259.         public static void Close(SqlConnection myConn)  
  260.         {  
  261.             if ((myConn != null) && (myConn.State == ConnectionState.Open))  
  262.             {  
  263.                 myConn.Close();  
  264.             }  
  265.         }  
  266.     }