当我更新任何记录时,整个表都被相同的记录(行)更新,我正在尝试下面的代码。我也尝试过连接,但有人告诉我关于sql注入。
con.Open();
try
{
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = @"UPDATE emptable
SET EmpName=@EmpName, Age=@Age ,Mobile=@Mobile,
Designation=@Designation ,Salary=@Salary ,
joiningDate=@joiningDate ,Address=@Address,
AccountNo=@AccountNo,
AccountHoldersName=@AccountHoldersName,
BankName=@BankName,IFSC=@IFSC,
EmpCode=@EmpCode,UINPANNO=@UINPANNO,
Whatsapp=@Whatsapp,FathersName=@FathersName,
MaritalStatus=@MaritalStatus,Email=@Email
WHERE Mobile= Mobile";
cmd.Parameters.AddWithValue("@EmpName", EmpNametxtbx.Text);
cmd.Parameters.AddWithValue("@Age", Agetxtbx.Text);
cmd.Parameters.AddWithValue("@Mobile", Mobiletxtbx.Text);
cmd.Parameters.AddWithValue("@Designation", Designationcmbbx.Text);
cmd.Parameters.AddWithValue("@Salary", Salarytxtbx.Text);
cmd.Parameters.AddWithValue("@JoiningDate", dTP1.Text);
cmd.Parameters.AddWithValue("@Address", Addresstxtbx.Text);
cmd.Parameters.AddWithValue("@AccountNo", Accounttxtbx.Text);
cmd.Parameters.AddWithValue("@AccountHoldersName", Holderstxtbx.Text);
cmd.Parameters.AddWithValue("@BankName", Banktxtbx.Text);
cmd.Parameters.AddWithValue("@IFSC", Ifsctxtbx.Text);
cmd.Parameters.AddWithValue("@EmpCode", EmpCodetxtbx.Text);
cmd.Parameters.AddWithValue("@UINPANNO", Uptxtbx.Text);
cmd.Parameters.AddWithValue("@Whatsapp", Whatsapptxtbx.Text);
cmd.Parameters.AddWithValue("@FathersName", Fatherstxtbx.Text);
cmd.Parameters.AddWithValue("@MaritalStatus", MStatuscmbbx.Text);
cmd.Parameters.AddWithValue("@Email", Emailtxtbx.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("record update");
//refresh or update table
OleDbCommand cmd1 = new OleDbCommand();
cmd1.Connection = con;
string query = "select * from emptable";
cmd1.CommandText = query;
OleDbDataAdapter da = new OleDbDataAdapter(cmd1);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
}
catch (Exception ex)
{
MessageBox.Show("error " + ex);
}
// Clear();
con.Close();
3条答案
按热度按时间41ik7eoe1#
问题是这里有一个拼写错误
WHERE Mobile= Mobile
。它应该是
WHERE Mobile=@Mobile
,所以Mobile
作为参数而不是表值传递。在这种情况下,infact条件始终为真,因此每个记录都会更新!关于串联:永远不要使用连接来构建查询!
您不仅会把代码搞得一团糟,而且如果出现错误,您会为调试而感到非常头痛,而且正如有人告诉您的那样,您也在冒SQL注入的风险!
c6ubokkw2#
关于可以使用的Sql注入应用程序|三轮胎架构|通过数据访问层连接并使用存储过程,然后加密业务层或控制器...但MS Access不支持存储过程,您可以使用MS SQL Server
uklbhaso3#
运行代码时,.accb文件中的where-condition参数不应具有类似的值。您需要清除accdb文件中的privos值。