如何从c#更新sql命令?

时间:2017-05-02 17:21:23

标签: c# sql asp.net

我无法更新存储在我的数据库中的用户数据。

我创建了一个按钮,然后添加了c#代码。

这是我的aspx代码:

  table class="logintable" border="0" cellpadding="0" cellspacing="0">
        <tr>

        </tr>
         <tr>
            <td>
                Fornavn
            </td>
            <td>
                <asp:TextBox ID="txtFornavn" runat="server" />
            </td>

            <td>
                <asp:Button ID="Button1" Text="Update" runat="server" OnClick="Button1_Click" />
            </td>
            <td>
            </td>
        </tr>
    </table> 

我尝试使用更新命令&#34;更新用户&#34;然后&#34; SET Name&#34;

这是我的c#代码:

  protected void Button1_Click(object sender, EventArgs e)
        {

            using (SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=testingDB;User id=sqluser2;Password=password01;"))
            {

                SqlCommand command1 = new SqlCommand("UPDATE Bruger SET Fornavn='" + txtFornavn.Text + "' where Email='"+ Session["Email"] + "';",con);

                //SqlCommand command1 = new SqlCommand();
                //command1 = con.CreateCommand();

                //command1.CommandText = "UPDATE Bruger set fornavn='"  + txtFornavn.Text+ "' where email='" + Session["email"] + "';";

                command1.Parameters.AddWithValue("@Fornavn", txtFornavn.Text);

                command1.Connection.Open();
                command1.ExecuteNonQuery();

                con.Close();

2 个答案:

答案 0 :(得分:0)

这可能就是你要找的东西:

protected void Button1_Click(object sender, EventArgs e)
{
    using (SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=testingDB;User id=sqluser2;Password=password01;"))
    {
        SqlCommand command1 = new SqlCommand("UPDATE Bruger SET Name=@Fornavn where Email=@email;",con);
        command1.Parameters.AddWithValue("@Fornavn", txtFornavn.Text);
        command1.Parameters.AddWithValue("@email", Session["Email"]);

        command1.Connection.Open();
        command1.ExecuteNonQuery();
    }
}

答案 1 :(得分:0)

永远不应使用内联变量构造您的SqlCommand。这导致SQL注入。

由于您没有提供您收到的异常,我将不得不指出我看到的缺陷,即在命令中添加一个没有参数的参数。

我的重播代码消除了原始命令中的内联变量,保留了您所拥有的参数分配,并为电子邮件地址添加了第二个。

SqlCommand command1 = new SqlCommand("UPDATE Bruger SET Fornavn=@Fornavn where Email=@Email",con);

command1.Parameters.AddWithValue("@Fornavn", txtFornavn.Text);
command1.Parameters.AddWithValue("@FEmail", (string)Session["email"]);

command1.Connection.Open();
command1.ExecuteNonQuery();