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个函数。是的,为什么不只是重载该方法?我已经重载了。只是想得到一些想法,看看是否有一个很好的简单的方法来进一步修改这个方法。谢谢大家。