在SQL脚本中使用DB名称的变量,从C#运行它

时间:2013-11-18 17:06:37

标签: c# sql sql-server

我有需要从控制台应用程序运行的脚本,但数据库名称将是app.config中的任何内容。我一直在研究在脚本中使用变量并从C#传递它们但我似乎找不到有关使用变量作为DB名称的更多信息,因为它将来自app.config连接字符串(将使用该应用程序)在多个站点)。如果我尝试做类似

的事情
DECLARE @dbName CHAR(50)
USE @dbName 

并尝试进行查询,它在@dbname上给出了一个错误。语法不正确,期待ID或QUOTED_ID。

有没有办法完成我想要做的事情?

编辑:虽然下面的答案解决了在代码中写出SQL的问题,但我正在寻找一个解决方案,将C#中的变量传入我正在运行的SQL脚本中。或者为什么在尝试将变量用于数据库名称时出现错误。

编辑2:我最终在脚本文件中使用占位符@DATABASENAME,然后将其读入字符串。填充字符串后,我将@DATABASENAME替换为目标数据库的名称。

1 个答案:

答案 0 :(得分:1)

您是否需要在变量中包含数据库名称?为什么不把它传递给Use directy?

string databaseVariable = "MASTER";
string sql = "USE {0}";
sql = string.Format(sql, databaseVariable);
RunSql(sql);