Asp.net 无法更新我的数据库

Asp.net 无法更新我的数据库,asp.net,ms-access,Asp.net,Ms Access,我有一个无法更新的access数据库。我以前已成功更新数据库,但无法更新其他表 这是我的代码: protected void Button1_Click(object sender, EventArgs e) { con.Open(); OleDbCommand cmd = new OleDbCommand("UPDATE [Support] SET [progress] = @progress, [personIC] = @personIC, [pers

我有一个无法更新的access数据库。我以前已成功更新数据库,但无法更新其他表

这是我的代码:

protected void Button1_Click(object sender, EventArgs e)
    {
        con.Open();
        OleDbCommand cmd = new OleDbCommand("UPDATE [Support] SET [progress] = @progress, [personIC] = @personIC, [personSIC] = @personSIC, [personICD] = @personICD WHERE logidticket ='" + Label1.Text + "'", con);
        cmd.Parameters.AddWithValue("progress", progress.SelectedItem.Value);
        cmd.Parameters.AddWithValue("personIC", personIC.Text);
        cmd.Parameters.AddWithValue("personSIC", personSIC.Text);
        cmd.Parameters.AddWithValue("personICD", personICD.Text);
        cmd.ExecuteNonQuery();
        Response.Redirect("itlog.aspx");
    }
这四列位于数据类型文本下


你知道为什么数据仍然输入错误吗?

我猜Label1.Text中的值与WHERE子句中的logidticket不匹配,导致它与更新记录不匹配

如果logidticket是整数,请删除引号。您可以在标签文本中使用空格,这样where子句就不会匹配任何记录

其次,避免将输入变量连接到SQL查询中。它容易受到SQL注入攻击。像其他参数一样,将Label1.Text作为参数传递

而不是:

WHERE logidticket ='" + Label1.Text + "'
这样做:

WHERE logidticket = @logidticket


cmd.Parameters.AddWithValue("logidticket ", Label1.Text);

“为什么数据仍然输入错误”是什么意思?我知道我们有语言障碍,但试着澄清你的问题。我猜Label1.Text中的值与WHERE子句中的logidticket不匹配,导致它不匹配任何更新记录。另外,请避免这种方法(将输入变量连接到SQL查询中)。您打开应用程序时可能会遇到SQL注入攻击。您没有理由不将Label1.Text作为参数像其他参数一样传递。您好,谢谢您的评论,是的,因为您可能是对的,我的数据库中的logidticket是“Autonumber”类型。在此页面之前,我将通过logidticket会话。因此,假设logidticket是一个“字符串”而不是“自动编号”Ok,请尝试记录其值或将其打印回页面,查看其值。一种很好的技术是记录整个语句,然后手动运行SQL语句。因此,我在我的“为什么数据仍然键入错误”中提到,是因为我无法更新personIC、personIC、personIC和progress到我的数据库。也许你对logidticket的看法是对的。对不起,我刚刚用这个asp.net学习了几个星期。