0

私はこのコードを持っています:

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' 付近の構文が正しくありません。

私が見逃しているものがあるに違いありません。

4

2 に答える 2

4

DDL にパラメーターを含めることはできません。テーブルと列を動的に作成/変更することを主張する場合は、動的 SQL を作成し、非常に慎重にエスケープする必要があります。

于 2013-08-17T15:53:24.527 に答える
-1
sql += @"ALTER TABLE [" + tableName + "] " +
        "ADD [" + columnName + "] " + dataType + " (" + size + ")";
于 2013-08-17T16:21:28.643 に答える