我有一个无法更新的访问数据库。我之前已经成功更新了数据库,但我无法更新另一个表。
这是我的编码:
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");
}
这四列属于数据类型文本。
为什么数据仍然错误的任何想法?
答案 0 :(得分:2)
我猜想你的Label1.Text中的值与WHERE子句中的logidticket不匹配,导致它没有匹配更新记录。
如果logidticket是整数,请删除引号。你可以在你的标签文本中放入空格,因为where子句不匹配任何记录。
其次,避免将输入变量连接到SQL查询中。它容易受到SQL注入攻击。将Label1.Text作为参数传递给其他参数。
而不是:
WHERE logidticket ='" + Label1.Text + "'
这样做:
WHERE logidticket = @logidticket
cmd.Parameters.AddWithValue("logidticket ", Label1.Text);