私は異なるパラメータ値を持つストアドプロシージャを呼び出すループを持っています。 次のコールcmd.ExecuteNonQuery();
私はトランザクションを使用してすべてまたはロールバックを保存し、checkBox2 - 常に保存します。 問題が1つ見つかり、解決策が見つからない。 catchブロックが起動されたときの最初の問題の後、トランザクションオブジェクトは接続を失います。 t.connection
はnullです。 すべてが良いですが、トランザクションオブジェクトは接続していませんスタートしました!catchトランザクション接続がnullの後の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
接続とトランザクションをどのように設定しますか? – Strillo
私はそれらをセットアップしました:if(conn2.State!= ConnectionState.Open)conn2.Open(); SqlTransaction t = conn2.BeginTransaction(); – pdusp