2016-09-17 82 views
1

我在多個數據庫中有一個表,我需要爲該表中的多個列更新和添加默認值。以編程方式向SQL Server添加多個默認值

我已經得到了以下約束添加到表:

ALTER TABLE ProcessQUeue 
ADD CONSTRAINT C_bSaveAfter DEFAULT 0 FOR bSaveAfter; 
GO 

ALTER TABLE ProcessQueue 
ADD CONSTRAINT C_bForcePassword DEFAULT 0 FOR bForcePassword; 
GO 

ALTER TABLE ProcessQueue 
ADD CONSTRAINT C_bIsComplete DEFAULT 0 FOR bIsComplete; 
GO 

如果我運行上面的SQL Server Management Studio中;它的效果很好。

我然後取出的限制和試圖通過我的代碼運行它:

private static string AlterTable(string szQuery, string szReferencedFileName) 
{ 
    try 
    { 
     using (SqlConnection aConnection = new SqlConnection(szConnectionString)) 
     { 
      aConnection.Open(); 

      using (SqlCommand dbCommand = new SqlCommand(szQuery, aConnection)) 
      { 
       dbCommand.ExecuteNonQuery(); 
      } 
     } 
    } 
    //Some usual exception handling 
    catch (SqlException e) 
    { 
     string szMsg = e.Message.ToString() + " " + e.ErrorCode.ToString(); 

     if (Environment.UserInteractive) 
      Console.WriteLine("\r\n" + szMsg + "\r\n - Query: " + szQuery + "\r\n - " + szConnectionString + "\r\n"); 

     return "ERR:SQLDB/AddTable: " + szMsg; 
    } 
    catch (Exception e) 
    { 
     string szMsg = e.Message.ToString(); 

     if (Environment.UserInteractive) 
      Console.WriteLine("\r\n" + szMsg + "\r\n - Query: " + szQuery + "\r\n - " + szConnectionString + "\r\n"); 

     return "ERRex:CheckSQLDB/AddTable: " + szMsg; 
    } 

    return string.Empty; 
} 

我得到一個錯誤:

Incorrect syntax near 'go'.
Incorrect syntax near 'go'.
Incorrect syntax near 'for'.

在某些情況下,我不得不刪除從該GO查詢,所以我也嘗試過,並且語法錯誤從'go'變爲'for'。

這爲什麼會在SQL Server Management Studio中工作,而不是在C#應用程序中?

+0

'GO'是** **分離器通過SQL Server Management Studio中使用SQL批處理 - 但它是不是** **正確的SQL語句 - 你不能在代碼中使用這個你執行從你的C#應用​​程序 –

回答

4

GO是無效的SQL。這就是爲什麼它不起作用。它只是Management Studio使用的批處理分隔符。您可以將所有這些查詢放入存儲過程中,也可以逐個運行它們。

+0

我也刪除了去,我得到上面列出的錯誤信息「附近的錯誤語法」。我必須做一個完全獨立的查詢調用,每次我想添加一個默認值有沒有辦法在一個查詢中做到這一點?(它一次只能工作一次,但這是很多疑問 - 不僅僅是上述三項) – DaBlue

1

謝謝,阿克謝。有了你發佈的內容,我想出了正確的語法來在一個查詢中添加多個默認值。格式是這樣的:

alter table ProcessQueue ADD 
CONSTRAINT C_bSaveAfter DEFAULT 0 FOR bSaveAfter, 
CONSTRAINT C_bForcePassword DEFAULT 0 FOR bForcePassword, 
CONSTRAINT C_bIsComplete DEFAULT 0 FOR bIsComplete; 
+0

歡迎您歡迎幫助 –

相關問題