forodo
چهارشنبه 22 بهمن 1393, 11:04 صبح
سلام
من قبلاٌ چندتا تابع داشتم که با هم کاری رو انجام می دادند و خیلی سریع انجام میشد ولی الان که داخل تراکنش قرارشون دادم یکی از تابع هام هست که خیلی دیر انجام میشه و به خاطر همین قضیه اروره زیر رو می ده که یعنی داخل کش می ره و باعث می شه که به من مقدار خالی برگردونه و کل تراکنش رو می ترکونه.
چرا اینجوری شده؟
ارور:
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
کدها:
UseDate uddd = new UseDate();
frmFonoshtDesc FonoshtDesc = new frmFonoshtDesc();
FonoshtDesc.Tag = "توضیح صادره";
FonoshtDesc.ShowDialog();
SqlTransaction Transaction;
SqlConnection con = new SqlConnection(clsForms.ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
con.Open();
Transaction = con.BeginTransaction();
cmd.Transaction = Transaction;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
try
{
cmd.CommandText = @"UPDATE tblLetterSadere
SET ControlProzheFinish = 1, FonoshtDesc = N'" + "کنترل پروژه" + "-" + Program.FonoshtDesc + "' WHERE NumberForAC = (SELECT NumberForAC FROM tblLetterSadere WHERE ID = " + Program.LetterID + ")";
cmd.ExecuteNonQuery();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
MessageBox.Show(NACFunctionBaygani());
return;
string NumberIdAC = NACFunctionBaygani();
string lvlvevel = CatchLevel();
cmd.CommandText = @"INSERT INTO tblDaryafti(SadereLetterID,ErjaDate,ErjaTime,Level L, NumberForAC
)
VALUES(
@SadereLetterID,@ErjaDate,@ErjaTime,@LevelL, @NumberForAC
)";
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@SadereLetterID", NumberIdAC);
cmd.Parameters.AddWithValue("@ErjaDate", uddd.GhamariToShamsi());
cmd.Parameters.AddWithValue("@ErjaTime", uddd.TimeEightCharacter());
cmd.Parameters.AddWithValue("@LevelL", lvlvevel + "-" + "بایگانی" + " (اختتام نامه)" + " " + uddd.GhamariToShamsi().ToString() + " " + uddd.TimeEightCharacter().ToString());
cmd.Parameters.AddWithValue("@NumberForAC", NumberIdAC);
cmd.ExecuteNonQuery();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Transaction.Commit();
MessageBox.Show("جریان نامه مورد نظر به اتمام رسید", "ثبت اطلاعات"
, MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();
}
catch (Exception)
{
Transaction.Rollback();
MessageBox.Show("در ارتباط با بانک اطلاعاتی مشکلی پیش آمده است", "خطا درون بانک اطلاعاتی", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.Close();
}
finally
{
con.Close();
}
و این هم اون تابعیه که طول می کشه و ارور روی کشش داده میشه:
private string NACFunctionBaygani()
{
SqlConnection objconnection =
new SqlConnection(clsForms.ConnectionString);
try
{
MessageBox.Show(Program.LetterID.ToString());
SqlDataAdapter objDataAdapter = new SqlDataAdapter();
DataSet objDataSet = new DataSet();
objDataAdapter.SelectCommand = new SqlCommand();
objDataAdapter.SelectCommand.Connection = objconnection;
objDataAdapter.SelectCommand.CommandText =
@"SELECT NumberForAC
FROM tblLetterSadere
WHERE ID = " + Program.LetterID;
objDataAdapter.SelectCommand.CommandType = CommandType.Text;
objconnection.Open();
objDataAdapter.Fill(objDataSet, "tblLetterSadere");
objconnection.Close();
return objDataSet.Tables["tblLetterSadere"].Rows[0]["NumberForAC"].ToString();
}
catch (Exception)
{
return "";
}
finally
{
objconnection.Close();
}
}
من قبلاٌ چندتا تابع داشتم که با هم کاری رو انجام می دادند و خیلی سریع انجام میشد ولی الان که داخل تراکنش قرارشون دادم یکی از تابع هام هست که خیلی دیر انجام میشه و به خاطر همین قضیه اروره زیر رو می ده که یعنی داخل کش می ره و باعث می شه که به من مقدار خالی برگردونه و کل تراکنش رو می ترکونه.
چرا اینجوری شده؟
ارور:
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
کدها:
UseDate uddd = new UseDate();
frmFonoshtDesc FonoshtDesc = new frmFonoshtDesc();
FonoshtDesc.Tag = "توضیح صادره";
FonoshtDesc.ShowDialog();
SqlTransaction Transaction;
SqlConnection con = new SqlConnection(clsForms.ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
con.Open();
Transaction = con.BeginTransaction();
cmd.Transaction = Transaction;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
try
{
cmd.CommandText = @"UPDATE tblLetterSadere
SET ControlProzheFinish = 1, FonoshtDesc = N'" + "کنترل پروژه" + "-" + Program.FonoshtDesc + "' WHERE NumberForAC = (SELECT NumberForAC FROM tblLetterSadere WHERE ID = " + Program.LetterID + ")";
cmd.ExecuteNonQuery();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
MessageBox.Show(NACFunctionBaygani());
return;
string NumberIdAC = NACFunctionBaygani();
string lvlvevel = CatchLevel();
cmd.CommandText = @"INSERT INTO tblDaryafti(SadereLetterID,ErjaDate,ErjaTime,Level L, NumberForAC
)
VALUES(
@SadereLetterID,@ErjaDate,@ErjaTime,@LevelL, @NumberForAC
)";
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@SadereLetterID", NumberIdAC);
cmd.Parameters.AddWithValue("@ErjaDate", uddd.GhamariToShamsi());
cmd.Parameters.AddWithValue("@ErjaTime", uddd.TimeEightCharacter());
cmd.Parameters.AddWithValue("@LevelL", lvlvevel + "-" + "بایگانی" + " (اختتام نامه)" + " " + uddd.GhamariToShamsi().ToString() + " " + uddd.TimeEightCharacter().ToString());
cmd.Parameters.AddWithValue("@NumberForAC", NumberIdAC);
cmd.ExecuteNonQuery();
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Transaction.Commit();
MessageBox.Show("جریان نامه مورد نظر به اتمام رسید", "ثبت اطلاعات"
, MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();
}
catch (Exception)
{
Transaction.Rollback();
MessageBox.Show("در ارتباط با بانک اطلاعاتی مشکلی پیش آمده است", "خطا درون بانک اطلاعاتی", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.Close();
}
finally
{
con.Close();
}
و این هم اون تابعیه که طول می کشه و ارور روی کشش داده میشه:
private string NACFunctionBaygani()
{
SqlConnection objconnection =
new SqlConnection(clsForms.ConnectionString);
try
{
MessageBox.Show(Program.LetterID.ToString());
SqlDataAdapter objDataAdapter = new SqlDataAdapter();
DataSet objDataSet = new DataSet();
objDataAdapter.SelectCommand = new SqlCommand();
objDataAdapter.SelectCommand.Connection = objconnection;
objDataAdapter.SelectCommand.CommandText =
@"SELECT NumberForAC
FROM tblLetterSadere
WHERE ID = " + Program.LetterID;
objDataAdapter.SelectCommand.CommandType = CommandType.Text;
objconnection.Open();
objDataAdapter.Fill(objDataSet, "tblLetterSadere");
objconnection.Close();
return objDataSet.Tables["tblLetterSadere"].Rows[0]["NumberForAC"].ToString();
}
catch (Exception)
{
return "";
}
finally
{
objconnection.Close();
}
}