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

使用asp.net表单向sql server表添加列

您对参数化查询感到困惑。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);