我无法更新存储在我的数据库中的用户数据。
我创建了一个按钮,然后添加了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();
答案 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();