OleDB参数未正确更新

时间:2015-07-09 12:40:09

标签: c# ms-access oledbcommand

con.Open();
com.Connection = con;
String query2 = "update PointCard set Player_User=@a where PC_Pass=@b";
com.CommandText = query2;

com.Parameters.Add(new OleDbParameter("a", txtUser.Text));
com.Parameters.Add(new OleDbParameter("b", txtPass.Text));
MessageBox.Show("Thank you for your continuous support");
com.ExecuteNonQuery();
con.Close();



con.Open();
com.Connection = con;
String query1 = "update PointCard set PC_Status=@x where PC_Pass=@y";
com.CommandText = query1;

com.Parameters.Add(new OleDbParameter("x", txtInactive.Text));
com.Parameters.Add(new OleDbParameter("y", txtPass.Text));
com.ExecuteNonQuery();
MessageBox.Show("PointCard " + txtPass.Text + " has been credited to your account");
con.Close();

我从上一个问题中学到了使用参数化查询,现在我又在这里感到困惑。

我遇到的问题是,在执行整个事情之后,Access表中的PC_StatustxtUser.Text的值结束。

1 个答案:

答案 0 :(得分:2)

即使您使用CommandText重新定义query1属性,您为query2添加的参数集仍然是仍然是命令的一部分。< / p>

更改CommandText的{​​{1}}属性并不会清除或影响它OleDbParameterCollection。它们仍然是该命令的一部分。

添加新参数时,请清除它们,例如;

OleDbCommand

或者您可以为第二个查询创建一个新的com.Parameters.Clear(); com.Parameters.Add(new OleDbParameter("x", txtInactive.Text)); com.Parameters.Add(new OleDbParameter("y", txtPass.Text)); 对象,例如;

SqlCommand

另请使用using statement自动处理您的连接和命令,而不是手动处理String query1 = "update PointCard set PC_Status=@x where PC_Pass=@y"; var com = new OleDbCommand(); com.CommandText = query1; ... ... 方法。