Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对多个插入使用MySqlTransaction时出错_C#_Mysql_Windows - Fatal编程技术网

C# 对多个插入使用MySqlTransaction时出错

C# 对多个插入使用MySqlTransaction时出错,c#,mysql,windows,C#,Mysql,Windows,我在windows中有一个窗体,我在其中为标题和详细信息执行insert语句。 我正在对表单使用MySqlTransaction。当header和detail中没有错误时,事务被提交,但当insert查询detail中有错误时,回滚时会出现以下错误 已存在与此连接关联的打开的DataReader 必须先关闭它 这是我的密码 public string Insert_Hardening_Measures_HdrANDDtl(BL_Vessel_Hardening_Measures objHdr,

我在windows中有一个窗体,我在其中为标题和详细信息执行insert语句。 我正在对表单使用MySqlTransaction。当header和detail中没有错误时,事务被提交,但当insert查询detail中有错误时,回滚时会出现以下错误

已存在与此连接关联的打开的DataReader 必须先关闭它

这是我的密码

public string Insert_Hardening_Measures_HdrANDDtl(BL_Vessel_Hardening_Measures objHdr, List<BL_Vessel_Hardening_Measures> objDtl)
        {
            string success = "true";
            string success1 = "";


            MySqlConnection MySqlConnection1 = new MySqlConnection(strCon);
            MySqlConnection1.Open();
            MySqlTransaction MyTransaction = MySqlConnection1.BeginTransaction();

            MySqlCommand MyCommand = new MySqlCommand();

            MyCommand.Transaction = MyTransaction;
            MyCommand.Connection = MySqlConnection1;             

            try
            {
            MyCommand.CommandText = "insert into hardening_measures_hdr (Hardening_Measures_Hdr_id,Month,Year) values (" + objHdr.Hardening_Measures_Hdr_id + ",'" + objHdr.Month + "','" + objHdr.Year + "')";
               MyCommand.ExecuteNonQuery();
                for (int i = 0; i < objDtl.Count; i++)
                {


                MyCommand.CommandText = "insert into hardening_measures_dtl (Hardening_Measures_Dtl_id,Hardening_Measures_Hdr_id,Hardening_Measures_Mst_id,Value) values (" + objDtl[i].Hardening_Measures_Dtl_id + "," + objDtl[i].Hardening_Measures_Hdr_id + ",'" + objDtl[i].Hardening_Measures_Mst_id + ",'" + objDtl[i].Value + "')";
                MyCommand.ExecuteNonQuery();
                }


                MyTransaction.Commit();
                MySqlConnection1.Close();
            }
            catch
            {

                MyTransaction.Rollback();
            }


            return success;
        }
public string Insert\u harding\u Measures\u HdrANDDtl(BL\u Vesser\u harding\u Measures objHdr,List objDtl)
{
字符串success=“true”;
字符串success1=“”;
MySqlConnection MySqlConnection1=新的MySqlConnection(strCon);
MySqlConnection1.Open();
MySqlTransaction MyTransaction=MySqlConnection1.BeginTransaction();
MySqlCommand MyCommand=新的MySqlCommand();
MyCommand.Transaction=MyTransaction;
MyCommand.Connection=MySqlConnection1;
尝试
{
MyCommand.CommandText=“插入到强化度量值中”(强化度量值id,月,年)值(“+objHdr.harding\u度量值id+”,“+objHdr.Month+”,“+objHdr.Year+”)”);
MyCommand.ExecuteOnQuery();
for(int i=0;i

任何遇到这种问题的人,请建议一些你应该经常使用的可能的副本。这种类型的字符串连接对攻击是开放的。并使用using语句来处理您的数据库连接。@Erti Chris Eelmaa我用专用命令对象尝试了您的方法,但dindn不起作用,我没有看到DataReader;它从哪里来?我也没有看到您在回滚后关闭连接。