好吧,这让我很困惑。我如何使用C#在db之间切换?以下不起作用。我也尝试在SQL mgmt studio中使用它,看起来Go需要单独使用才能工作。
sqlCmd.CommandText = @"USE [" + db + "] GO";
有什么想法吗?
答案 0 :(得分:4)
您不应该尝试在命令对象的上下文中更改数据库,您应该在SqlConnection级别更改它。见MSDN
答案 1 :(得分:3)
连接对象上的连接字符串将命名数据库。您应该使用引用新数据库的新连接对象。
答案 2 :(得分:0)
GO
is not part of SQL,这是特殊的Sql Server Management Studio(以及其他一些Microsoft实用程序)使用的东西,它标志着“批处理”的分离。每个GO都会转换为C#中的ExecuteXXXXQuery
操作。
我假设你的代码比你发布的更多,所以我们可以说你的原始查询是
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();
}