0

好吧,这完全让我感到困惑。我如何使用 C# 在 db 之间切换?以下不起作用。我还在 SQL mgmt studio 中尝试过使用它,看来 Go 需要单独在线才能工作。

sqlCmd.CommandText = @"USE [" + db + "] GO";

有任何想法吗?

4

3 回答 3

4

您不应该尝试在命令对象的上下文中更改数据库,而应该在 SqlConnection 级别更改它。看到这个MSDN

于 2013-06-19T19:13:22.380 回答
3

连接对象上的连接字符串将命名一个数据库。您应该使用引用新数据库的新连接对象。

于 2013-06-19T19:12:53.433 回答
0

GO不是 SQL 的一部分,这是特殊的 Sql Server Management Studio(和其他一些 Microsoft 实用程序)使用的东西,它标志着“批次”的分离。每个 GO 都会转化为ExecuteXXXXQueryC# 中的一个动作。

我假设您的代码比您发布的更多,所以假设您的原始查询是

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();
}
于 2013-06-19T20:03:33.057 回答