Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从正在运行的asp.net网站上的SQL表中更改列名?_C#_Asp.net_Sql Server - Fatal编程技术网

C# 如何从正在运行的asp.net网站上的SQL表中更改列名?

C# 如何从正在运行的asp.net网站上的SQL表中更改列名?,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我用ASP.NET创建了一个网站,该网站连接到SQL数据库 该网站在网格视图的帮助下显示了一个表格 我的目标是用户可以向该表中添加一列并为其命名。 这需要一个文本框和一个按钮的帮助 到目前为止,我可以通过单击按钮将表格添加到列中,但我不知道如何使用文本框为列命名 private void disp_data() { SqlCommand cmd = con.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.C

我用ASP.NET创建了一个网站,该网站连接到SQL数据库

该网站在网格视图的帮助下显示了一个表格

我的目标是用户可以向该表中添加一列并为其命名。 这需要一个文本框和一个按钮的帮助

到目前为止,我可以通过单击按钮将表格添加到列中,但我不知道如何使用文本框为列命名

private void disp_data()
{
    SqlCommand cmd = con.CreateCommand();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "select * from table1";
    cmd.ExecuteNonQuery();
    DataTable dt = new DataTable();
    SqlDataAdapter da = new SqlDataAdapter(cmd);                                                
    da.Fill(dt);
    GridView3.DataSource = dt;
    GridView3.DataBind();
}
---Try1

---Try2

---Try1

System.Data.SqlClient.SqlException:“Textboxcontent”附近的语法不正确。”

---Try2

System.Data.SqlClient.SqlException:“@CName”附近的语法不正确。”


我不建议尝试1,因为它容易受到SQL注入的攻击。 Try 2不起作用,因为您使用的是逐字记录字符串,而不是使用
@CName
作为字符串

protectedvoid AddRow\u单击(对象发送方,事件参数e){
SqlCommand cmd=con.CreateCommand();
cmd.CommandType=CommandType.Text;
cmd.CommandText=“ALTER TABLE table1 ADD@CName VARCHAR(50)NULL;”;
cmd.Parameters.AddWithValue(“@CName”,TextBox3.Text);
cmd.ExecuteNonQuery();
}
我不得不添加“替换”以使@CNAME变得有用, 现在它起作用了

受保护的void AddRow\u单击(对象发送方,事件参数e) {

                SqlCommand cmd = con.CreateCommand();
        cmd.CommandType = CommandType.Text;         
        cmd.CommandText = "ALTER TABLE table1 ADD @CNAME VARCHAR(50) NULL;";
        cmd.CommandText = cmd.CommandText.Replace("@CNAME", TextBox3.Text);
       // cmd.Parameters.AddWithValue("@CName", TextBox3.Text);
        cmd.ExecuteNonQuery();

        disp_data();
    }

感谢您的快速回答,但当我这样做时,它再次向我显示:System.Data.SqlClient.SqlException:“der Nähe von'@CName'中的Falsche语法”。对于所有查询,使用SQL参数是一个好主意。但不幸的是,SQL Server不允许DDL查询中使用变量。这是必须坚持使用“替换”的情况之一方法。
protected void AddRow_Click(object sender, EventArgs e)
{

    SqlCommand cmd = con.CreateCommand();
    cmd.CommandType = CommandType.Text;
    string Columnname = Convert.ToString(TextBox3.Text);
    cmd.CommandText = "ALTER TABLE table1 ADD @CName VARCHAR(50)   NULL;";
    cmd.Parameters.AddWithValue(@"CName", Columnname);
    cmd.ExecuteNonQuery();

    disp_data();
}

protected void AddRow_Click(object sender, EventArgs e)
{
    SqlCommand cmd = con.CreateCommand();
    cmd.CommandType = CommandType.Text;         
    cmd.CommandText = "ALTER TABLE table1 ADD NewColumn VARCHAR(50)        NULL;";            
    cmd.ExecuteNonQuery();

    disp_data();
}                           // This works
                SqlCommand cmd = con.CreateCommand();
        cmd.CommandType = CommandType.Text;         
        cmd.CommandText = "ALTER TABLE table1 ADD @CNAME VARCHAR(50) NULL;";
        cmd.CommandText = cmd.CommandText.Replace("@CNAME", TextBox3.Text);
       // cmd.Parameters.AddWithValue("@CName", TextBox3.Text);
        cmd.ExecuteNonQuery();

        disp_data();
    }