我如何在C#中的属性传递参数给SQLSERVER。 我必须执行一个存储过程,它需要属性中的参数。请让我知道我该怎么做......传递参数在SQL
传递参数在SQL
回答
执行存储过程的一个选项是使用SqlCommand对象和SqlParameter对象。
你可以建立的SqlParameter对象的集合,代表您的参数和功能来运行的SqlCommand填充DataSet,例如。
你可以用两个函数来实现这个功能,一个函数建立一个SqlParameters列表,它为每个参数调用一次以将其添加到列表中,另一个函数使用该列表和存储过程的名称等并运行存储过程。
如果你只是做这一个关闭这些功能可能是一些开销,所以我也已经所示的例子做这一切功能于一体。
在我的例子下面我展示了如何返回一个数据集,但你可以使用cmdt.ExecuteNonQuery(),而不是作为独立的例子。
一个辅助功能,以 “构建” 一个参数列表:
private DataSet GetStoredProcedureWithParameters(SqlConnection SQLC,
string StoredProcedureName, List<SqlParameter> paras)
{
SQLC.Open();
SqlCommand cmdt = new SqlCommand(StoredProcedureName, WEL);
cmdt.CommandType = CommandType.StoredProcedure;
cmdt.Parameters.AddRange(paras.ToArray());
SqlDataAdapter dat = new SqlDataAdapter(cmdt);
DataSet dst = new DataSet();
dat.Fill(dst);
SQLC.Close();
return dst;
}
然后调用像这样:
private void BuildSqlParameter(string ParameterName, SqlDbType DBType,
string Value, ParameterDirection dir, ref List<SqlParameter> paras)
{
SqlParameter temp;
temp = new SqlParameter(ParameterName, DBType);
temp.Value = Value;
temp.Direction = dir;
paras.Add(temp);
}
来运行存储过程中的功能 公众的SqlConnection的MySqlConnection = new SqlConnection(“Database = MyDB; SERVER = MyServer; Failover Partner = MyServer2; UID = MyID; PWD = MyPassword”); List para = new List(); BuildSqlParameter( “@参数名称”,SqlDbType.VarChar, 的parameterValue,ParameterDirection.Input,参考第); 数据集本地= GetStoredProcedureWithParameters(的MySqlConnection, “MyStoredProcedureName”,第);
其中:
- 的MySqlConnection是的SqlConnection(在本例中为完整的定义)
- MYDB是你的数据库的名称
- 的MyServer是服务器的名称
- MyServer2是故障转移服务器(非必要)
- 身份识别码的名字是你的SQL Server的用户名
- MyPassword输入你的SQL服务器密码
- “@parameterName”是参数
- SqlDbType.VarChar的名称是第二个参数的数据类型例如
- 的parameterValue是你要传递到参数
- MyStoredProcedureName的变量名您想要运行的存储过程的数量
如果您需要多个参数,请根据需要多次运行BuildSqlParameter。
或者,如果你只是想要一些一次性的代码做这样的:
MySQLConnection.Open();
SqlCommand cmdt = new SqlCommand("MyStoredProcedureName",
MySQLConnection);
cmdt.CommandType = CommandType.StoredProcedure;
SqlParameter para = cmdt.Parameters.Add("@ParameterName",
System.Data.SqlDbType.VarChar);
para.Value = ParameterValue;
para.Direction = ParameterDirection.Input;
cmdt.ExecuteNonQuery();
MySQLConnection.Close();
要添加更多的参数,这将是这样的:
SqlParameter para2 = cmdt.Parameters.Add("@ParameterName2",
System.Data.SqlDbType.VarChar);
para2.Value = ParameterValue2;
para2.Direction = ParameterDirection.Input;
其中:
- “@ ParameterName2”是第二个参数的名称
- ParameterValue2是你想传递给第二个参数
- System.Data.SqlDbType.VarChar是第二个参数
对不起,不得不downvote,但这并不回答这个问题,不完全清楚,代码不是如何调用SP的最佳示例。 – Jaymz 2011-04-05 15:37:52
我不同意,问题是“执行需要参数的存储过程” - 这就是代码的作用。 我会添加更多关于它在做什么的描述。 如果您不同意如何调用SP,您能否提供更好的示例? – PCurd 2011-04-05 15:41:28
您提供的代码示例提供了一个名为ClearOrderToggle的方法,该方法对OP没有意义,参数RepRef对我们也没有任何意义,变量MySQLConnection没有定义或解释,一个循环多次调用'cmdt.Parameters.Add',而不是调用'cmdt.Parameters.AddRange',以及其他一些误导/混乱的例子。 – Jaymz 2011-04-05 15:46:32
- 1. 传递SQL函数参数
- 2. SQL CE参数传递
- 3. 传递参数SQL作业
- 4. Gridview和传递SQL参数
- 5. 在SQL查询中传递参数
- 6. 如何传递参数在SQL查询
- 7. PL/SQL传递函数作为参数
- 8. 传递BLOB/CLOB作为参数传递给PL/SQL函数
- 9. 传递参数
- 10. 传递参数
- 11. 参数传递
- 12. 传递参数
- 13. 传递参数
- 14. 传递参数
- 15. 传递参数
- 16. 传递参数
- 17. 传递参数
- 18. 参数传递
- 19. 传递参数
- 20. 参数传递
- 21. 传递参数
- 22. 传递参数
- 23. 传递参数
- 24. 参数传递
- 25. 传递参数
- 26. 传递参数
- 27. 传递参数
- 28. 传递参数
- 29. 传递参数
- 30. 参数传递
你能提供有关情况的详细信息的示例数据类型的变量?现在很难确定你在问什么。 – marcind 2011-04-05 14:05:01