2013-03-08 196 views
1

現在,我可以通過HTTPpost方法從我的網站執行腳本。將參數傳遞給sql腳本

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; 

我必須手動現在進入我的腳本的頂部呢?

回答

0

創建一個新的SqlCommand並將腳本CommandText設置爲您的腳本文本,然後使用cmd.Parameters.Add設置參數。

使用參數與CRUD操作是很簡單的(谷歌爲「T-SQL參數」千資源的),但是參數化的類型名稱是更多地參與,對於有一個漫長的MSDN文章在這裏:http://msdn.microsoft.com/en-us/library/bb510489.aspx

如果你正在尋找快速'n'髒的東西,你可以通過在你的sql文件中放置替換序列並使用正則表達式來進行每個替換,例如使用語法「{{fieldName}}」來推出自己的參數化系統。

+0

您能舉一個關於如何使用Parameters.Add的例子,具體來說就是您將作爲展示位置持有者輸入到腳本中的內容。 – zms6445 2013-03-08 21:31:54

+0

我已經更新了我的答案。 – Dai 2013-03-08 21:38:09

+0

我已經添加了一些代碼。我只需要知道除了打開文件並手動修改文件以輸入該命令之外,是否還有其他方法。 – zms6445 2013-03-08 21:38:16