好吧,这完全让我感到困惑。我如何使用 C# 在 db 之间切换?以下不起作用。我还在 SQL mgmt studio 中尝试过使用它,看来 Go 需要单独在线才能工作。
sqlCmd.CommandText = @"USE [" + db + "] GO";
有任何想法吗?
您不应该尝试在命令对象的上下文中更改数据库,而应该在 SqlConnection 级别更改它。看到这个MSDN
连接对象上的连接字符串将命名一个数据库。您应该使用引用新数据库的新连接对象。
GO
不是 SQL 的一部分,这是特殊的 Sql Server Management Studio(和其他一些 Microsoft 实用程序)使用的东西,它标志着“批次”的分离。每个 GO 都会转化为ExecuteXXXXQuery
C# 中的一个动作。
我假设您的代码比您发布的更多,所以假设您的原始查询是
select * into #t from foo
use [someOtherDatabase]
GO
insert into foo select * from #t
这将在 C# 中出现的是
using(var cmd = SqlCommand("", connectionString))
{
cmd.CommandText = @"select * into #t from foo
use [someOtherDatabase]";
cmd.ExecuteNonQuery();
cmd.CommandText = "insert into foo select * from #t";
cmd.ExecuteNonQuery();
}