ado.net使用相同的sqlcommand对象来执行多个命令

本文关键字:对象 执行 命令 sqlcommand net ado | 更新日期: 2023-09-27 17:59:43

任何人都能说出使用相同的SqlCommand对象在.net应用程序中执行多个命令。

情况:我有一个截断表命令,它是首先执行的。然后我将执行SqlBulkcopy操作然后我希望同一个命令对象执行另一个存储过程执行一些更新或将数据移动到不同的表。

我不想创建新的Command对象。

还有一件事,三个操作都在一个事务中。

提前谢谢。

ado.net使用相同的sqlcommand对象来执行多个命令

您不必创建新对象。只需指定一个新的

command.CommandText = "SELECT FROM WHERE...";

在执行每个命令之前使用必要的参数。

我相信你可以做到。。。

SqlCommand command = new SqlCommand();
command.CommandText = 
    "SELECT FROM WHERE...; SELECT FROM WHERE...; SELECT FROM WHERE...;";

您可以使用同一个SqlCommand对象来执行更多命令。只需确保将以下属性重置为适当的值

  • SqlCommand.CommandText
  • SqlCommand.CommandType-将其设置为CommandType.StoredProcedure,以备下次需要执行存储过程时使用
  • SqlCommand.Parameters-您可以使用SqlCommandBuilder.DeriveParameters用所需参数覆盖现有参数信息,尽管这需要对服务器进行额外调用

不能将所有操作都包含在一个命令文本"GO"语句中吗?如果您需要在单独的批处理中运行查询段,您也可以将事务与此一起使用

TRUNCATE TABLE X;
GO
/* do SqlBulkcopy code*/
GO
/* EXECUTE STORED PROC*/
GO