2010-08-23 133 views
0

我有幾個腳本需要在我的數據庫上運行。所以我有幾個問題。通過腳本創建表以及如何運行腳本

當打開到數據庫的連接時,我只需使用Connection,CommandText,CommandType和CommandTimeout。

第一個問題 - 有誰知道如果通過這種方法,我可以創建permantent表,而不是臨時表?

其次 - 我將如何運行此文件?我可以將文件設置爲參數,並在查詢中運行參數?

感謝

回答

0

您可以在.NET SQL連接中執行任何操作,您可以在SQL腳本中執行任何操作。就「運行文件」而言,您需要將文件文本加載到內存中,並將加載的文本作爲單個命令執行。

我們在應用中做類似的事情。我們的數據庫腳本存儲在SQL腳本中。我們將每個文件從磁盤順序加載到內存中並執行。

+0

如何將文本加載到內存中,類似於使用(StreamReader sr - New StreamReader(「fileName」))' – Vibralux 2010-08-23 13:41:02

+0

準確地說。或者使用File.ReadAllLines()。完整閱讀文件,然後執行文本。爲了更好地適應其他應用程序,請使用FileAccess.read和FileShare.Read打開FileStream,然後在FileStream上打開StreamReader。 – 2010-08-23 13:59:34

0

在C# -

  1. 您可以創建永久和臨時表這種方式。

  2. 將該腳本作爲命令對象的CommandText運行。

+0

感謝這個答覆,說我需要不斷更新的文件,所以我有文件的鏈接,而不是實際的文件,我只是通過參數運行它,還是有另一種方式? – Vibralux 2010-08-23 13:23:56

0

例如,從MSDN:如何設置參數的查詢,

private static void UpdateDemographics(Int32 customerID, 
    string demoXml, string connectionString) 
{ 

    string commandText = "UPDATE Sales.Store SET Demographics = @demographics " 
     + "WHERE CustomerID = @ID;"; 

    using (SqlConnection connection = new SqlConnection(connectionString)) 
    { 
     SqlCommand command = new SqlCommand(commandText, connection); 
     command.Parameters.Add("@ID", SqlDbType.Int); 
     command.Parameters["@ID"].Value = customerID; 

     command.Parameters.AddWithValue("@demographics", demoXml); 

     try 
     { 
      connection.Open(); 
      Int32 rowsAffected = command.ExecuteNonQuery(); 
      Console.WriteLine("RowsAffected: {0}", rowsAffected); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 
    } 
}