请好心人提供一个调用储存过程的方法
我不想每次都写重复的代码,各位能不能提供一个调用存储过程的方法,带参数的,sqlhelper不会用,谢谢了,最好给个例子
------解决方案--------------------如果你会用企业类库的话,那里面有很好的调用存储过成的方法
------解决方案--------------------using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Collections;
using System.Data;
// 摘要:数据访问助手。
// 作者:ZhiQiao
// 日期:2008/07/02
namespace ZhiQiao.DataAccessHelper
{
   // 存储过程调用助手。
   public class StoreProcedure
   {
       // 存储过程名称。
       private string _name;
       // 数据库连接字符串。
       private string _conStr;
       // 构造函数
        // sprocName: 存储过程名称;
        // conStr: 数据库连接字符串。
       public StoreProcedure(string sprocName, string conStr) {
           _conStr = conStr;
           _name = sprocName;
       }      
       //  执行存储过程,不返回值。
        //  paraValues: 参数值列表。
        //  return: void
       public void ExecuteNoQuery(params object[] paraValues) {
           using (SqlConnection con = new SqlConnection(_conStr)) {
               SqlCommand comm = new SqlCommand(_name, con);
               comm.CommandType = CommandType.StoredProcedure;
               AddInParaValues(comm, paraValues);
               con.Open();
               comm.ExecuteNonQuery();
               con.Close();
           }
       }      
       // 执行存储过程返回一个表。
        // paraValues: 参数值列表。
        // return: DataTable
       public DataTable ExecuteDataTable(params object[] paraValues) {
           SqlCommand comm = new SqlCommand(_name, new SqlConnection(_conStr));
           comm.CommandType = CommandType.StoredProcedure;
           AddInParaValues(comm, paraValues);
           SqlDataAdapter sda = new SqlDataAdapter(comm);
           DataTable dt = new DataTable();
           sda.Fill(dt);
           return dt;
       }     
       // 执行存储过程,返回SqlDataReader对象,
        // 在SqlDataReader对象关闭的同时,数据库连接自动关闭。
        // paraValues: 要传递给给存储过程的参数值类表。
        // return: SqlDataReader
       public SqlDataReader ExecuteDataReader(params object[] paraValues) {
           SqlConnection con = new SqlConnection(_conStr);
           SqlCommand comm = new SqlCommand(_name, con);
           comm.CommandType = CommandType.StoredProcedure;
           AddInParaValues(comm, paraValues);
           con.Open();
           return comm.ExecuteReader(CommandBehavior.CloseConnection);
       }
       // 获取存储过程的参数列表。
       private ArrayList GetParas() {
           SqlCommand comm = new SqlCommand("dbo.sp_sproc_columns_90",  
                      new SqlConnection(_conStr));
           comm.CommandType = CommandType.StoredProcedure;
           comm.Parameters.AddWithValue("@procedure_name", (object)_name);
           SqlDataAdapter sda = new SqlDataAdapter(comm);
           DataTable dt = new DataTable();
           sda.Fill(dt);
           ArrayList al = new ArrayList();
           for (int i = 0; i < dt.Rows.Count; i++) {
               al.Add(dt.Rows[i][3].ToString());
           }
           return al;
       }
       // 为 SqlCommand 添加参数及赋值。
       private void AddInParaValues(SqlCommand comm, params object[] paraValues) {
           comm.Parameters.Add(new SqlParameter("@RETURN_VALUE", SqlDbType.Int));
           comm.Parameters["@RETURN_VALUE"].Direction =  
                          ParameterDirection.ReturnValue;
           if (paraValues != null) {
               ArrayList al = GetParas();
               for (i