我有,我调用存储不同的参数值的程序循环。 下次通话cmd.ExecuteNonQuery();
我用交易来保存所有或回滚和checkBox2 - 永远保存。 我发现一个问题,我找不到解决方案。 第一个问题出现在catch块被触发时事务对象失去连接。 t.connection
为空! 一切都很好,但交易对象是没有在启动它连接!的SqlTransaction为空
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();
}
你错过的代码在该块相当数量。我想说,你的第一步将是简化它,并发布整块。另外,我会考虑*不*把括号放在他们自己的路线上;扫描一大块空白的代码很困难。 (但这是我的意见) – NotMe 2012-03-23 13:09:23
你如何设置你的连接和交易? – Strillo 2012-03-23 13:14:34
我设置了他们:如果(!conn2.State = ConnectionState.Open)conn2.Open(); SqlTransaction t = conn2.BeginTransaction(); – pdusp 2012-03-23 13:17:29