gpt4 book ai didi

c# - 捕获事务连接后的 SqlTransaction 为空

转载 作者:行者123 更新时间:2023-11-30 12:14:18 27 4
gpt4 key购买 nike

我有一个循环,我在其中调用具有不同参数值的存储过程。接下来调用 cmd.ExecuteNonQuery();我使用事务来保存全部或回滚,并使用 checkBox2 - 始终保存。我发现了一个问题,但找不到解决方案。在触发 catch block 时的第一个问题之后,事务对象失去了连接。t.connection 为空!一切都很好,但交易对象没有连接在开始时它有!

    try 
{

while (!sr.EndOfStream)
{
strLine.Remove(0, strLine.Length);
//c = sr.ReadLine();

while (c != "-")
{
c = sr.ReadLine();
strLine.Append(c );
if (sr.EndOfStream) break;
}

//strLine.Append("Nowa pozycja");
try
{
cmd.Parameters["@s"].Value = strLine.ToString();
cmd.Parameters["@Return_value"].Value = null;
cmd.ExecuteNonQuery();
}
catch
{
if (cmd.Parameters["@Return_value"].Value == null)
{
cmd.Parameters["@Return_value"].Value = -100;
}

if (((int)cmd.Parameters["@Return_value"].Value == 100) || (checkBox2.Checked))
{
if ((int)cmd.Parameters["@Return_value"].Value != 100)
{
MessageBox.Show("Są błedy! " + cmd.Parameters["@s"].Value);
};
}
}

if (!checkBox2.Checked)
{
if ((Int32)cmd.Parameters["@Return_value"].Value != 100)
{
break;
}
}

c = "";
}
textBox1.Text = strLine.ToString();


}
catch
{
// t.Rollback();
// t = null;
textBox1.Text = strLine.ToString();
textBox1.Visible = true;
MessageBox.Show("Wystąpiły problemy w czasie importu " + cmd.Parameters["@s"].Value);
//return;
}

finally
{
if (cmd.Parameters["@Return_value"].Value == null)
{
cmd.Parameters["@Return_value"].Value = -100;
}

if (((int)cmd.Parameters["@Return_value"].Value==100)||(checkBox2.Checked))
{
t.Commit();
if ((int)cmd.Parameters["@Return_value"].Value!=100)
{
MessageBox.Show("Transakcja zapisana ale w pliku były błedy! " + cmd.Parameters["@s"].Value);
};
}
else
{
if (t!=null) {t.Rollback();}
MessageBox.Show("Transakcja odrzucona!");
}


conn2.Close();
aFile.Close();
}

enter image description here

最佳答案

遇到了类似的问题。在我的例子中,它发生在特定的 SqlException 中。大多数异常都会被捕获并处理得很好,但每当我遇到转换错误(例如尝试将字符串转换为数字)时,它会自动结束事务。

为了解决这个问题,我必须在构建/提交命令对象之前实现数据检查(无论如何是个好主意)。希望这可以帮助其他人看到这个奇怪的错误。

关于c# - 捕获事务连接后的 SqlTransaction 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9839631/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com