Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SqlClient的包装方法_C#_Sql Server_Ado.net_Sqlclient - Fatal编程技术网

C# SqlClient的包装方法

C# SqlClient的包装方法,c#,sql-server,ado.net,sqlclient,C#,Sql Server,Ado.net,Sqlclient,每当我需要使用SqlDataReader执行存储过程时,我有以下包装器方法可以很好地工作 现在我想对其进行一些修改,使其能够处理另外两种情况: 我只需调用ExecuteNonQuery() 我将调用ExecuteNonQuery(),但也将读取输入/输出参数的值。此参数可以是任何一个输入参数,其类型可以是GUID、int、DateTime或字符串 如何修改此方法,以便在这两个场景中也可以使用它 public static void ExecuteStoredProc(string procedu

每当我需要使用
SqlDataReader
执行存储过程时,我有以下包装器方法可以很好地工作

现在我想对其进行一些修改,使其能够处理另外两种情况:

  • 我只需调用
    ExecuteNonQuery()
  • 我将调用
    ExecuteNonQuery()
    ,但也将读取输入/输出参数的值。此参数可以是任何一个输入参数,其类型可以是GUID、
    int
    DateTime
    或字符串
  • 如何修改此方法,以便在这两个场景中也可以使用它

    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);
            }
        }
    }
    
    public static void executestoreproc(字符串过程重命名、操作集参数操作、操作句柄readeraction)
    {
    使用(SqlConnection conn=newsqlconnection(ConnectionString))
    {
    SqlCommand cmd=新的SqlCommand(过程重命名,conn);
    cmd.CommandType=CommandType.storedProcess;
    if(setParametersAction!=null)
    设置参数设置(cmd);
    conn.Open();
    SqlDataReader=cmd.ExecuteReader();
    if(handleReaderAction!=null)
    {
    HandlerReaderAction(读卡器);
    }
    }
    }
    
    糟糕的路径,我建议使用ORM并转储您自己的“一劳永逸”方法我经常使用类似的帮助器方法——我建议您为3个不同的用例创建3个函数。是的,为什么不只是重载该方法?我已经重载了。只是想得到一些想法,看看是否有一个很好的简单的方法来进一步修改这个方法。谢谢大家。