【问题标题】:Adding column-name dynamically in alter table在 alter table 中动态添加列名
【发布时间】:2013-02-11 18:14:08
【问题描述】:

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

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

现在我想通过文本框动态更改 [列名]。我怎样才能做到这一点? 此外,我在 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();

【问题讨论】:

  • 我将代码添加到我的问题中。
  • 您是否只想更改列名或向表中添加新列。问题主题正在发生变化,但示例源代码是关于添加新列的。
  • 天啊!谢谢你提到这一点。我彻夜未眠!这是关于添加。
  • 谢谢。我希望我能...:)
  • 但是还有一个问题,我想从文本框中获取名称!这是我的主要问题。

标签: asp.net sql alter-table


【解决方案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】:

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

    Declare @SQL VarChar(1000)
    
    SELECT @SQL = 'ALTER TABLE my_table ADD ' + @column + ' INT'
    
    Exec (@SQL)
    

    【讨论】:

      【解决方案3】:

      试试下面的东西..

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

      【讨论】:

      • 如何添加一列?
      【解决方案4】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-28
        • 1970-01-01
        • 1970-01-01
        • 2011-09-04
        • 2022-01-25
        • 2013-04-06
        • 1970-01-01
        相关资源
        最近更新 更多