c# - 重用 SqlCommand?

标签 c# .net sql-server

我不确定这是否可能。

我目前正在做一个大学项目,我有一个使用存储过程的函数。我想知道是否可以采用相同的 SqlCommand 实例并应用更新的参数以在同一函数内再次调用存储过程。

假设我的代码中有这样的东西:

myConStr = ConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString;
myConn = new SqlConnection(myConStr);
myCommand = new System.Data.SqlClient.SqlCommand("team5UserCurrentBooks3", myConn); 
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.AddWithValue("@book_id", bookID);
myCommand.Parameters.AddWithValue("@user_id", userID);

try
{
    myConn.Open();
    myCommand.ExecuteNonQuery();

是否可以更新MyCommand的参数并再次调用存储过程?

最佳答案

是的。您需要确保在每次调用之间调用 myCommand.Parameters.Clear 以转储参数,但没有什么可以阻止您重用该对象。 (我不常使用C#,所以文中可能会有一两处错误)

myConStr = ConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString;
myConn = new SqlConnection(myConStr);
myConn.Open();

myCommand = new System.Data.SqlClient.SqlCommand("team5UserCurrentBooks3", myConn); 
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.AddWithValue("@book_id", bookID);
myCommand.Parameters.AddWithValue("@user_id", userID);
myCommand.ExecuteNonQuery();

myCommand.Parameters.Clear();
myCommand.CommandText= "NewStoredProcedureName";
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.AddWithValue("@foo_id", fooId);
myCommand.Parameters.AddWithValue("@bar_id", barId);
mycommand.ExecuteNonQuery();

myCommand.Parameters.Clear();
myCommand.CommandText = " SELECT * FROM table1 WHERE ID = @TID;"
myCommand.CommandType = CommandType.Text;
myCommand.Parameters.AddWithValue("@tid", tId);
SqlReader rdr;
rdr = myCommand.ExecuteReader();

关于c# - 重用 SqlCommand?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/670407/

相关文章:

c# - Wcf 并行和异步调用?

c# - ASP.net RegularExpressionValidator 即使输入无效也允许回发

c# - 将同步或异步方法作为任务使用

c# - 忽略排队的鼠标事件

c# - 路由和 url 中的 ASP.NET MVC 5 文化

C# 字典计算组值的总和

c# - 使用 C# 编辑 XML 文档

c# - 无法从 C# 使用 AAD 连接到 Azure SQL 数据库

sql - SQL Server 中用于存储科学记数法值的正确数据类型? (例如 10^3)

sql - 如何使用 SQL 将 Sql Server DateTime 转换为通用时间