C# 如何从正在运行的asp.net网站上的SQL表中更改列名?
我用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
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();
}