2016-09-17 47 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

欢迎您欢迎帮助 –

相关问题