好的,我的功能是为了这个目的,我不确定这是否是完美的方式
我认为srStored_Procedure_Name
是自我解释的
List<string> lst_StoredProcedure_Variable_Names
提供存储过程变量名称
List<List<object>> lst_Operation_Parameters
提供将要添加的参数,每个列表具有与存储过程变量名称计数相同数量的对象
通过以下方式,我将使用与服务器相同的连接,在整个插入操作期间将打开不超过1个连接
非常感谢答案
还有一个问题我必须在try catch块中包装这一行吗?会有任何错误导致应用程序崩溃吗?
using (SqlConnection connection = new SqlConnection(DbConnection.srConnectionString))
C#WPF .net 4.5 SQL server 2014
public static bool batch_execute_SQL_stored_Procedure(string srStored_Procedure_Name, List<string> lst_StoredProcedure_Variable_Names,
List<List<object>> lst_Operation_Parameters)
{
bool blErrorHappened = false;
try
{
using (SqlConnection connection = new SqlConnection(DbConnection.srConnectionString))
{
connection.Open();
for (int i = 0; i < lst_Operation_Parameters.Count; i++)
{
using (SqlCommand cmd = new SqlCommand(srStored_Procedure_Name, connection))
{
cmd.CommandTimeout = PublicSettings.irCommandTimeOutSettings_Second;
cmd.CommandType = CommandType.StoredProcedure;
for (int k = 0; k < lst_Operation_Parameters[i].Count; k++)
{
cmd.Parameters.AddWithValue(lst_StoredProcedure_Variable_Names[k], lst_Operation_Parameters[i][k]);
}
try
{
cmd.ExecuteNonQuery();
}
catch (Exception E)
{
blErrorHappened = true;
//log error here
}
}
}
}
}
catch (Exception E)
{
blErrorHappened = true;
//log error here
}
return blErrorHappened;
}