Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式向SQL Server添加多个默认值_C#_Sql Server - Fatal编程技术网

C# 以编程方式向SQL Server添加多个默认值

C# 以编程方式向SQL Server添加多个默认值,c#,sql-server,C#,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 AD

我在多个数据库中有一个表,需要为该表中的多个列更新和添加默认值

我需要将以下约束添加到表中:

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
如果我在SQLServerManagementStudio中运行上述操作;它工作得很好

然后,我删除了约束,并尝试通过我的代码运行它:

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;
}
我得到一个错误:

“go”附近的语法不正确。 “go”附近的语法不正确。 “for”附近的语法不正确

在某些情况下,我不得不从查询中删除GO,所以我也尝试过,语法错误是从“GO”更改为“for”


为什么这在SQL Server Management Studio中有效,而在C应用程序中无效?

GO不是有效的SQL。这就是它不起作用的原因。它只是ManagementStudio使用的批处理分隔符。您可以将所有这些查询放在存储过程中,也可以逐个运行它们

GO不是有效的SQL。这就是它不起作用的原因。它只是ManagementStudio使用的批处理分隔符。您可以将所有这些查询放在存储过程中,也可以逐个运行它们

谢谢,阿克谢。根据您发布的内容,我找到了在一个查询中添加多个默认值的正确语法。格式如下:

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;

谢谢,阿克谢。根据您发布的内容,我找到了在一个查询中添加多个默认值的正确语法。格式如下:

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;

GO是SQL Server Management Studio使用的SQL批的分隔符-但它不是正确的SQL语句-您不能在从C应用程序执行的代码中使用它GO是SQL Server Management Studio使用的SQL批的分隔符-但它不是正确的SQL语句-您不能在从C应用程序执行的代码中使用它我也删除了它go's和我收到上面列出的错误消息,'附近的语法不正确。我是否必须为每个要添加默认值的值执行完全独立的查询调用,或者是否有方法在一个查询中执行此操作?它一次只运行一个,但这是很多查询-不仅仅是上面三个,我还删除了go,我得到了上面列出的错误消息“for”附近的错误语法。我是否必须为每个要添加默认值的值执行完全独立的查询调用,或者是否有方法在一个查询中执行此操作?它一次只运行一个,但这需要大量的查询,而不仅仅是上述三个查询