使用asp.net表单向sql server表添加列
本文关键字:server 添加 sql asp net 表单 使用 | 更新日期: 2023-09-27 18:09:36
我使用c#表单,需要输入一个列名到"varchar(100)"文本框,并提交表单,在sql server的"Products3"表上创建一个列。我得到这个错误"创建列错误。当我点击提交按钮时,System.Web.UI.WebControls.TextBox附近的语法错误。我不知道为什么SQL语句没有看到文本框。请帮助。
========================== FrontPage ===
<form id="form1" runat="server">
<div>
<br /><br />
<asp:button id="IP_TextBtn" onclick="btnAddColumn_Click" runat="server" text="Submit" />
<br />
<br />
<asp:textbox id="txtIP_TextField" runat="server"></asp:textbox>
<br />
<br />
<asp:Label id="lblResults" runat="server" Width="575px" Height="121px" Font-Bold="True"></asp:Label>
<br />
<br />
</div>
</form>
========================= BackPage ===
// Creating the Method for adding a new column to the database
public virtual void btnAddColumn_Click(object sender, EventArgs args)
{
{
string alterSQL;
alterSQL = "ALTER TABLE Products3 ";
alterSQL += "ADD '" + txtIP_TextField + "' bool()";
SqlConnection con = new SqlConnection(GetConnectionString());
SqlCommand cmd = new SqlCommand(alterSQL, con);
cmd.Parameters.AddWithValue("@txtIP_TextField ", txtIP_TextField.Text);
int SQLdone = 0;
try
{
con.Open();
SQLdone = cmd.ExecuteNonQuery();
lblResults.Text = "Column created.";
}
catch (Exception err)
{
lblResults.Text = "Error Creating column. ";
lblResults.Text += err.Message;
}
finally
{
con.Close();
}
}
}
您对参数化查询感到困惑。txtIP_TextField
不是查询的参数,因此将其添加到Parameters
集合中没有帮助。你的查询应该是:
string alterSQL = "ALTER TABLE Products3 ADD @txtIP_TextField BIT";
Edit:看起来可能无法参数化此语句。在这种情况下,您需要使用:
string alterSQL = String.Format("ALTER TABLE Products3 ADD {0} BIT",
txtIP_TextField.Text);
然而,这仍然是受制于SQL注入攻击,您将需要"清理"txtIP_TextField。
使用txtIP_TextField。文本
alterSQL += "ADD '" + txtIP_TextField.Text + "' bool()";
这是你的文本框的值
使用
string alterSQL;
alterSQL = "ALTER TABLE Products3 ";
alterSQL += "ADD @txtIP_TextField bool()";
SqlConnection con = new SqlConnection(GetConnectionString());
SqlCommand cmd = new SqlCommand(alterSQL, con);
cmd.Parameters.AddWithValue("@txtIP_TextField ", txtIP_TextField.Text);