C#改变SQL表

时间:2013-08-17 15:50:57

标签: c# sql

我有这段代码:

try
{
    OpenDatabaseConnection();
    sql += @"ALTER TABLE @TableName " +
            "ADD @ColumnName @DataType(@Size)";

    using (SqlCommand command = conn.CreateCommand())
    {
        command.CommandText = sql;
        command.Parameters.Add("@TableName", SqlDbType.VarChar).Value = tableName;
        command.Parameters.Add("@ColumnName", SqlDbType.NVarChar).Value = columnName;
        command.Parameters.Add("@DataType", SqlDbType.NVarChar).Value = dataType;
        command.Parameters.Add("@Size", SqlDbType.NVarChar).Value = size;

        command.ExecuteNonQuery();
    }
    CloseDatabaseConnection();
}
catch (Exception ex)
{
     ArrowMessageBoxes.ArrowErrorMessage(ex.Message);
}
finally
{
     CloseDatabaseConnection();
}

当此代码运行时,我收到以下错误:'@TableName'附近的语法不正确。

一定有我遗失的东西。

2 个答案:

答案 0 :(得分:4)

DDL不能包含参数。如果您坚持动态创建/更改表和列,则需要创建动态SQL和escape very, very carefully

答案 1 :(得分:-1)

sql += @"ALTER TABLE [" + tableName + "] " +
        "ADD [" + columnName + "] " + dataType + " (" + size + ")";