0

我正在开发一个 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

4 回答 4

1

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

Declare @SQL VarChar(1000)

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

Exec (@SQL)
于 2013-02-11T09:07:02.007 回答
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();
        }
    }
于 2013-02-11T09:31:07.420 回答
0

试试下面的东西..

dataTable.Columns["列名"].ColumnName = "更新的列名";

于 2013-02-11T09:06:44.013 回答
0

嗯,也许发布您的代码示例会有所帮助。例如,您的列名变量是静态变量吗?如果变量未声明为静态变量,则每次调用 Alter 表方法并通过文本框 textChanged 事件对其进行更改时,都将使用其默认值声明该变量。

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

再次提供更多信息将不胜感激。

于 2013-02-11T09:16:54.910 回答