在alter table中动态添加column-name

时间:2013-02-11 09:01:59

标签: asp.net sql alter-table

我正在开发一个Web应用程序,需要在其中使用ALTER Table。 这是我的代码:

ALTER TABLE [tablename] ADD [column-name] [Type] DEFAULT [default-value] NULL/NOT NULL 

现在我想通过文本框动态更改[column-name]。我怎样才能做到这一点? 另外我在AddWithValue中使用@name,但它不起作用! 有谁能够帮我? 感谢

这是我的全部代码:

SqlConnection sqlconn4 = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConn"].ConnectionString);
                   SqlCommand sqlcomm4 = new SqlCommand("ALTER TABLE aspnet_Membership ADD @column int DEFAULT 0 NOT NULL", sqlconn4);

                    sqlcomm4.Parameters.AddWithValue("@column", TextBox1.Text);
                    sqlconn4.Open();
                    sqlcomm4.ExecuteNonQuery();
                    sqlconn4.Close();

4 个答案:

答案 0 :(得分:1)

只有动态SQL查询才有可能:

Declare @SQL VarChar(1000)

SELECT @SQL = 'ALTER TABLE my_table ADD ' + @column + ' INT'

Exec (@SQL)

答案 1 :(得分:1)

使用sp_rename程序,您可以更改列名。

sp_RENAME 'Table_First.Name', 'NameChange' , 'COLUMN'

http://blog.sqlauthority.com/2008/08/26/sql-server-how-to-rename-a-column-name-or-table-name/

public void AddNewColumn(string tableName, string columName, string dataType)
    {
        string commandText = String.Format("ALTER TABLE {0} ADD {1} {2} ", tableName,columName,dataType);

        using (var sqlConnection = new SqlConnection("===="))
        {
            var cmd = sqlConnection.CreateCommand();
            cmd.CommandText = commandText;

            sqlConnection.Open();
            cmd.ExecuteNonQuery();
        }
    }

答案 2 :(得分:0)

尝试下面的事情..

dataTable.Columns [“column-name”]。ColumnName =“updated column-name”;

答案 3 :(得分:0)

嗯,也许发布你的代码样本会有所帮助。例如,您的column-name变量是静态变量吗?如果变量未声明为static,则每次调用Alter表方法并使用textbox textChanged事件对其进行更改时,将使用其默认值声明该变量。

另一方面,如果你当前的问题试图让动态部分工作,你是否使用文本框的textChanged事件来改变列名变量?

再一次,我们将非常感谢您提供更多信息。