1

现在,我可以使用 HTTPpost 方法从我的网站执行脚本。

string scriptDirectory = "c:\\Users\\user\\Documents";
                string sqlConnectionString = "Integrated Security=SSPI;" +
                    "Persist Security Info=True;Data Source=ARES";
                DirectoryInfo di = new DirectoryInfo(scriptDirectory);
                FileInfo[] rgFiles = di.GetFiles("*.sql");
                foreach (FileInfo fi in rgFiles)
                {
                    FileInfo fileInfo = new FileInfo(fi.FullName);
                    string script = fileInfo.OpenText().ReadToEnd();
                    SqlConnection connection = new SqlConnection(sqlConnectionString);
                    Server server = new Server(new ServerConnection(connection));
                    server.ConnectionContext.ExecuteNonQuery(script);
                    connection.Close();
                }

Atm 脚本正在创建一个新数据库(数据库还不是动态的)。我想传入网站用户输入的参数,然后将其传递到 sql 脚本中。基本上我希望他们选择要创建的数据库的名称。

SQL 命令就在脚本的开头。

CREATE DATABASE [This is where the name will be passed to]
GO
USE[This is where the name will be passed to]

编辑:

我有这个代码

SqlCommand createDbCommand = new SqlCommand();
        createDbCommand.CommandText = "CREATE DATABASE [@DataBase]";
        createDbCommand.Parameters.Add("@DataBase", SqlDbType.Text);
        createDbCommand.Parameters["@DataBase"].Value = client.HostName;

我现在必须手动将其输入到脚本的顶部吗?

4

1 回答 1

0

创建一个新的 SqlCommand 并将脚本设置为CommandText脚本的文本,然后使用cmd.Parameters.Add.

将参数与 CRUD 操作一起使用很简单(谷歌对于数千个资源的“t-sql 参数”),但是参数化类型名称更复杂,因为这里有一篇冗长的 MSDN 文章:http: //msdn.microsoft.com/ zh-CN/图书馆/bb510489.aspx

如果您正在寻找快速“n”脏的东西,您可以通过将替换序列放入您的 sql 文件并使用正则表达式进行每个替换来滚动您自己的参数化系统,例如使用语法“ {{fieldName}}”。

于 2013-03-08T21:22:59.233 回答