交易过程 - 死锁错误

交易过程 - 死锁错误

问题描述:

当我从软件更新数据时,我正面临着死锁错误。交易过程 - 死锁错误

这里是我的代码:

所有的
private void btn_upd_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     SqlConnection con = new SqlConnection(Constr); 
     con.Open(); 
     string myquery = "Select Reg,Rank,Trade,Name,Wing,Father_name,Dob,Gender,Cast,Sect,Serial,Qualification,Tehseel,District,Cnic_No,Blood_Group,Height,Weight,Identification_Mark,Permanent_Add,Nameof_Spouse,Relation,Nameof_MaleKids,image1 from PersonalInfo where Reg='" + txt_srch.Text + "'"; 

     SqlCommand c = new SqlCommand(myquery, con); 

     SqlDataReader rd = c.ExecuteReader(); 

     if (!(rd.HasRows)) 
     { 
      MessageBox.Show("No such data to delete"); 
     } 
     else 
     { 
      string query; 

      query = "update PersonalInfo set Rank='" + textBox2.Text + "', Serial='" + SN.Text + "', Trade='" + textBox3.Text + "',Name='" + textBox4.Text + "',Wing='" + textBox5.Text + "',Father_name='" + textBox6.Text + "',Dob='" + textBox7.Text + "',Gender='" + textBox8.Text + "',Cast='" + textBox9.Text + "',Sect='" + textBox23.Text + "',Qualification='" + textBox10.Text + "',Tehseel='" + textBox24.Text + "',District='" + textBox21.Text + "',Cnic_No='" + textBox11.Text + "',Blood_Group='" + textBox12.Text + "',Height='" + textBox13.Text + "',Weight='" + textBox14.Text + "',Identification_Mark='" + textBox15.Text + "',Permanent_Add='" + textBox16.Text + "',Nameof_Spouse='" + textBox18.Text + "',Relation='" + textBox19.Text + "',Nameof_MaleKids='" + textBox20.Text + "',image1='" + ImageToBase64(pictureBox1.Image, System.Drawing.Imaging.ImageFormat.Jpeg) + "' where Reg='" + txt_srch.Text + "'"; 

      SqlCommand cmd = new SqlCommand(query, con); 
      cmd.ExecuteNonQuery(); 
      MessageBox.Show("Data Updated"); 
     } 
     con.Close(); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 
+1

[SQL注入警报(http://msdn.microsoft.com/en-us/library/ms161953%28v= sql.105%29.aspx) - 你应该不**将你的SQL语句连接在一起 - 使用**参数化查询**来避免SQL注入 - 检出[Little Bobby Tables](https://xkcd.com/327 /) –

首先,marc_s已经说过,从用户直接输入串联您的疑问是危险的。建议您应该考虑更改该方法并使用参数化查询。

其次,尝试自己的连接Open()Close()内运行的每个查询:

private void btn_upd_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     SqlConnection con = new SqlConnection(Constr); 

     con.Open(); 

     string myquery = "Select Reg,Rank,Trade,Name,Wing,Father_name,Dob,Gender,Cast,Sect,Serial,Qualification,Tehseel,District,Cnic_No,Blood_Group,Height,Weight,Identification_Mark,Permanent_Add,Nameof_Spouse,Relation,Nameof_MaleKids,image1 from PersonalInfo where Reg='" + txt_srch.Text + "'"; 

     SqlCommand c = new SqlCommand(myquery, con); 

     SqlDataReader rd = c.ExecuteReader(); 

     con.Close(); 

     if (!(rd.HasRows)) 
     { 
      MessageBox.Show("No such data to delete"); 
     } 
     else 
     { 
      con.Open(); 

      string query; 

      query = "update PersonalInfo set Rank='" + textBox2.Text + "', Serial='" + SN.Text + "', Trade='" + textBox3.Text + "',Name='" + textBox4.Text + "',Wing='" + textBox5.Text + "',Father_name='" + textBox6.Text + "',Dob='" + textBox7.Text + "',Gender='" + textBox8.Text + "',Cast='" + textBox9.Text + "',Sect='" + textBox23.Text + "',Qualification='" + textBox10.Text + "',Tehseel='" + textBox24.Text + "',District='" + textBox21.Text + "',Cnic_No='" + textBox11.Text + "',Blood_Group='" + textBox12.Text + "',Height='" + textBox13.Text + "',Weight='" + textBox14.Text + "',Identification_Mark='" + textBox15.Text + "',Permanent_Add='" + textBox16.Text + "',Nameof_Spouse='" + textBox18.Text + "',Relation='" + textBox19.Text + "',Nameof_MaleKids='" + textBox20.Text + "',image1='" + ImageToBase64(pictureBox1.Image, System.Drawing.Imaging.ImageFormat.Jpeg) + "' where Reg='" + txt_srch.Text + "'"; 

      SqlCommand cmd = new SqlCommand(query, con); 

      cmd.ExecuteNonQuery(); 

      con.Close(); 

      MessageBox.Show("Data Updated"); 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 
+0

是的,这是正确的。击败我! @Syed除非将SQL作为事务,存储过程或函数的一部分结合在一起,否则无法在ONE cmd对象中执行多个SQL命令。 – Fandango68