尝试在同一连接中运行多个命令时,C#Winforms Npgsql 3.0.5“正在进行的操作”错误

前端之家收集整理的这篇文章主要介绍了尝试在同一连接中运行多个命令时,C#Winforms Npgsql 3.0.5“正在进行的操作”错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在C# Winforms中运行以下代码段.这段代码适用于pgsql 2.2.6适配器.为了与pgsql3.0.5适配器一起正常工作,可以进行哪些更正?谢谢.
  1. NpgsqlConnection conn = new NpgsqlConnection(MainForm2.MyConString);
  2. {
  3. conn.Open();
  4. using (NpgsqlCommand cmd = new NpgsqlCommand("SELECT rfid,name,sc_id from passenger ORDER by name",conn))
  5. {
  6. NpgsqlDataReader dr = cmd.ExecuteReader();
  7. while (dr.Read())
  8. {
  9. var obj = new PassengerClass
  10. {
  11. RFID = dr.GetString(0),Name = dr.GetString(1),sc_id = dr.GetInt32(2)
  12. };
  13. s = dr.GetString(0);
  14. try { ret.Add(s,obj); }
  15. catch (Exception ex) { SM.Debug("Fail to add RFID Name in hash RFID:" + s + ex.ToString()); }
  16. }
  17. }
  18. MainForm2.PassHash = ret;
  19. try
  20. {
  21. using (NpgsqlCommand cmd = new NpgsqlCommand(string.Format("UPDATE place set useridx ={0} where useridx=0",MainForm2.userIDX),conn))
  22. cmd.ExecuteNonQuery();
  23.  
  24. using (NpgsqlCommand cmd = new NpgsqlCommand(string.Format("UPDATE zonename set useridx ={0} where useridx=0",conn))
  25. cmd.ExecuteNonQuery();
  26. }
  27. catch (Exception ex)
  28. {
  29. SM.Debug("Error on update users IDX for place and zone with value 0 :" + ex.ToString());
  30. }

所以,在第二个命令语句中,它给出了以下错误

A first chance exception of type ‘System.InvalidOperationException’
occurred in Npgsql.dll

Additional information: An operation is already in progress.

编辑附加信息:

解决方法

您需要处理在第一个ExecuteReader调用中获得的NpgsqlDataReader,使用using语句将其包装起来,就像使用NpgsqlCommand一样.

猜你在找的C&C++相关文章