2013-02-11 110 views
0

我正在开发一个web应用程序,需要在其中使用ALTER Table。 这里是我的代码:在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(); 
+0

你有两个问题,实际上,应该分开询问。对于addwithvalue不起作用,你应该提供源代码。 – adt 2013-02-11 09:32:20

+1

我将我的代码添加到我的问题。 – Reza 2013-02-11 09:38:38

+1

,你是否想改变你的列名或向表中添加新的列。问题主题正在改变,但示例源代码是关于添加新列的。 – adt 2013-02-11 09:45:31

回答

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(); 
     } 
    } 
0

尝试下面的事情..

dataTable.Columns [ “字段名”]的ColumnName = “更新的列名”;

+0

如何添加一列到它? – Reza 2013-02-11 10:04:26

1

有可能只适用于动态SQL查询:

Declare @SQL VarChar(1000) 

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

Exec (@SQL) 
0

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

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

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

+0

我在我的问题中添加我的代码。 – Reza 2013-02-11 09:38:57