OleDB参数更新不正常

本文关键字:不正常 更新 参数 OleDB | 更新日期: 2023-09-27 18:01:45

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_Status以某种方式结束了txtUser.Text的值。

OleDB参数更新不正常

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

改变OleDbCommandCommandText属性不会清除或影响OleDbParameterCollection。它们仍然是命令的一部分。

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

com.Parameters.Clear();
com.Parameters.Add(new OleDbParameter("x", txtInactive.Text));
com.Parameters.Add(new OleDbParameter("y", txtPass.Text));

或者您可以为第二个查询创建一个新的SqlCommand对象,如;

String query1 = "update PointCard set PC_Status=@x where PC_Pass=@y";
var com = new OleDbCommand();
com.CommandText = query1;
...
...

还请使用using语句自动处理连接和命令,而不是手动使用Close方法。