C# sqlCommand对象并使用循环添加参数
我们可以使用foreach清除表单中的所有文本框,而无需为每个文本框键入代码来清除它们C# sqlCommand对象并使用循环添加参数,c#,sqlcommand,C#,Sqlcommand,我们可以使用foreach清除表单中的所有文本框,而无需为每个文本框键入代码来清除它们 com.Parameters.Add(new SqlParameter("@",objPlayrInjr_P)); using (SqlCommand com = new SqlCommand()) { com.CommandText = "SPname"; com.Connection = connection object; com.CommandType = CommandTy
com.Parameters.Add(new SqlParameter("@",objPlayrInjr_P));
using (SqlCommand com = new SqlCommand())
{
com.CommandText = "SPname";
com.Connection = connection object;
com.CommandType = CommandType.StoredProcedure;
com.Parameters.Add(new SqlParameter("@SqlParameterName",objectName.propertyName));
}
我需要一种方法通过循环将
sqlParameters
添加到命令
对象中,就像我清除文本框时所做的那样。因此,无需为每条语句编写代码,它将由循环完成。一种方法是将参数名称和值放入字典中,然后
foreach (KeyValuePair<string, object> param in params)
{
com.Parameters.AddWithValue(param.Key, param.Value);
}
foreach(参数中的KeyValuePair参数)
{
com.Parameters.AddWithValue(param.Key,param.Value);
}
一种方法是将参数名称和值放入字典中,然后
foreach (KeyValuePair<string, object> param in params)
{
com.Parameters.AddWithValue(param.Key, param.Value);
}
foreach(参数中的KeyValuePair参数)
{
com.Parameters.AddWithValue(param.Key,param.Value);
}
下面是一些使用注释的内容:
用于标记具有参数名称的特性的注释
示例类
用法
下面是一些使用注释的内容:
用于标记具有参数名称的特性的注释
示例类
用法
要进行循环,您需要一个参数名和属性值的列表。我建议只使用标准方法添加参数。将它们保存在数据层/类中。我认为,如果您尝试在域对象中提供参数列表或使用参数名称标记域对象,将不会节省很多时间。我的第一个问题是您尝试了什么?请显示您尝试的代码示例。如果你没有尝试过任何东西,那么请使用“谷歌”来帮助你。我们非常乐意提供帮助,但请“帮助我们帮助您”。要进行循环,您需要一个参数名称和属性值的列表。我建议只使用标准方法添加参数。将它们保存在数据层/类中。我认为,如果您尝试在域对象中提供参数列表或使用参数名称标记域对象,将不会节省很多时间。我的第一个问题是您尝试了什么?请显示您尝试的代码示例。如果你没有尝试过任何东西,那么请使用“谷歌”来帮助你。我们都非常乐意提供帮助,但请“帮助我们帮助你”。尽管如此,你会推荐这样做吗?您的表单模型将完全由任意值的字典组成。什么表单模型?除了他希望能够在循环中设置SqlParameter之外,没有为这个问题提供上下文。对“表单”的唯一引用是可以在表单上使用foreach清除文本框。我在基于用户输入设置复杂查询时就是这样做的(例如,用户可以选择成为IN子句一部分的1..N个键)。不过,您建议这样做吗?您的表单模型将完全由任意值的字典组成。什么表单模型?除了他希望能够在循环中设置SqlParameter之外,没有为这个问题提供上下文。对“表单”的唯一引用是可以在表单上使用foreach清除文本框。我在基于用户输入设置复杂查询时就是这样做的(例如,用户可以选择1..N个键,这些键成为IN子句的一部分)。
public class Person
{
[Parameter("FirstName")]
public string FirstName { get; set; }
[Parameter("LastName")]
public string LastName { get; set; }
[Parameter("EmailAddress")]
public string Email { get; set; }
}
SqlCommand command = new SqlCommand();
Person person = new Person()
{
FirstName = "John",
LastName = "Doe",
Email = "johndoe@domain.com"
};
foreach (var pi in person.GetType().GetProperties())
{
var attribute = (ParameterAttribute)pi.GetCustomAttributes(typeof(ParameterAttribute), false).FirstOrDefault();
if (attribute != null)
{
command.Parameters.AddWithValue(string.Format("@{0}", attribute.ParameterName), pi.GetValue(person, null));
}
}