SqlClient的包装器方法

时间:2016-01-04 21:16:13

标签: c# sql-server ado.net sqlclient

我有以下包装器方法,只要我需要使用SqlDataReader执行存储过程,它就能很好地工作。

我现在想稍微修改一下,以便处理另外两种情况:

  1. 我只需致电ExecuteNonQuery()
  2. 我将调用ExecuteNonQuery(),但也会读取输入/输出参数的值。此参数可以是任何一个输入参数,其类型可以是GUID,intDateTime或字符串。
  3. 如何修改此方法以便我也可以在这两种情况下使用它?

    public static void ExecuteStoredProc(string procedureName, Action<SqlCommand> setParametersAction, Action<SqlDataReader> handleReaderAction)
    {
        using (SqlConnection conn = new SqlConnection(ConnectionString))
        {
            SqlCommand cmd = new SqlCommand(procedureName, conn);
            cmd.CommandType = CommandType.StoredProcedure;
    
            if (setParametersAction != null)
                setParametersAction(cmd);
    
            conn.Open();
            SqlDataReader reader = cmd.ExecuteReader();
    
            if (handleReaderAction != null)
            {
                handleReaderAction(reader);
            }
        }
    }
    

0 个答案:

没有答案