2012-02-21 96 views
0

我有以下查詢:

use [$(DB)] 
select * from users 

,但我不能傳遞參數低谷的SqlCommand。它只能從命令行工具中使用。它說$ DB數據庫不存在,所以參數不傳遞。

  SqlCommand cmd = new SqlCommand(query, connection); 
      cmd.Parameters.AddWithValue("DB", "theDatabase"); 
      cmd.ExecuteNonQuery(); 

任何想法?

+3

爲什麼不能在連接字符串中指定DB? – 2012-02-21 15:55:04

+0

你正在使用什麼RDMS .. ?? – MethodMan 2012-02-21 15:55:50

+0

這些是成百上千的遷移腳本。 MSSQLSERVER 2005和2008 – mynkow 2012-02-21 15:59:45

回答

0

我能想到這樣做的唯一途徑是TI使用exec來是這樣的:

exec ('use ['+ @db + ']; SELECT * FROM someTable'); 

我不知道這是否會幫助你,但...

0

正如在建議評論同上,只是指定數據庫連接字符串中:

var connectionString = @"…;Initial Catalog=theDatabase;…"; 
//       ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

using (var connection = new SqlConnection(connectionString)) 
using (var command = connection.CreateCommand()) 
{ 
    command.CommandText = "SELECT * FROM users"; 
    … 
} 

如果你使用同一實例不同的數據庫時,您可以使用一個ConnectionStringBuilder放在一起各種C語言連接字符串僅在數據庫名稱中有所不同。 (注意你可能想要比SELECT *更具體);

+0

10x。問題是我有很多腳本無法輕易修改。 – mynkow 2012-02-21 18:36:08