PDA

View Full Version : سوال: رخ دادن مداوم خطا و اجرای بلاک catch



prg_mail
جمعه 02 خرداد 1393, 19:29 عصر
با سلام
هر کاری میکنم این کد فقط قسمت catch ش اجرا میشه

try
{
//double num;
SqlCommand command = new SqlCommand("INSERT INTO Scores(LessonCode,TermCode,StudentID,StudentScore) VALUES(@p1,@p2,@p3,@p4) ", connection);
connection.Open();
SqlParameter parameter = new SqlParameter("p1", lessonCode.ToString());
parameter.SqlDbType = SqlDbType.BigInt;
SqlParameter parameter2 = new SqlParameter("p2", termCode.ToString());
parameter2.SqlDbType = SqlDbType.SmallInt;
SqlParameter parameter3 = new SqlParameter("p3", textBoxStdID1.Text);
parameter3.SqlDbType = SqlDbType.Char;
SqlParameter parameter4 = new SqlParameter("p4", double.Parse(textBoxStdScore1.Text));
parameter4.SqlDbType = SqlDbType.Float;
command.Parameters.Add(parameter);
command.Parameters.Add(parameter2);
command.Parameters.Add(parameter3);
command.Parameters.Add(parameter4);

if (command.ExecuteNonQuery() == 1)
{
textBoxStdScore1.Clear();
textBoxStdID1.Clear();
MessageBox.Show(this, ".نمره جديد با موفقيت ثبت شد", "", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
}
catch (Exception ex)
{
MessageBox.Show(".نمره اين دانشجو براي اين درس قبلاً وارد شده است");
}

جالب اینجاست که قسمت try رو جداگانه اجرا میکنم نه خطا میده نه چیزی در دیتابیس ثبت میکنه
دیتابیسمونم اینه :




LessonCode bigint 8
TermCode smallint 2
StudentID char 15
StudentScore float 8

aghayex
جمعه 02 خرداد 1393, 19:55 عصر
SqlCommand command = new SqlCommand("INSERT INTO Scores(LessonCode,TermCode,StudentID,StudentScore) VALUES(@p1,@p2,@p3,@p4) ", connection);
SqlParameter parameter = new SqlParameter("@p1", lessonCode.ToString());
parameter.SqlDbType = SqlDbType.BigInt;
SqlParameter parameter2 = new SqlParameter("@p2", termCode.ToString());
parameter2.SqlDbType = SqlDbType.SmallInt;
SqlParameter parameter3 = new SqlParameter("@p3", textBoxStdID1.Text);
parameter3.SqlDbType = SqlDbType.Char;
SqlParameter parameter4 = new SqlParameter("@p4", double.Parse(textBoxStdScore1.Text));
parameter4.SqlDbType = SqlDbType.Float;
command.Parameters.Add(parameter);
command.Parameters.Add(parameter2);
command.Parameters.Add(parameter3);
command.Parameters.Add(parameter4);
connection.Open();
if (command.ExecuteNonQuery() == 1)
{
textBoxStdScore1.Clear();
textBoxStdID1.Clear();
MessageBox.Show(this, ".نمره جديد با موفقيت ثبت شد", "", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
connection.Close();
}

prg_mail
جمعه 02 خرداد 1393, 20:01 عصر
SqlCommand command = new SqlCommand("INSERT INTO Scores(LessonCode,TermCode,StudentID,StudentScore) VALUES(@p1,@p2,@p3,@p4) ", connection);
SqlParameter parameter = new SqlParameter("@p1", lessonCode.ToString());
parameter.SqlDbType = SqlDbType.BigInt;
SqlParameter parameter2 = new SqlParameter("@p2", termCode.ToString());
parameter2.SqlDbType = SqlDbType.SmallInt;
SqlParameter parameter3 = new SqlParameter("@p3", textBoxStdID1.Text);
parameter3.SqlDbType = SqlDbType.Char;
SqlParameter parameter4 = new SqlParameter("@p4", double.Parse(textBoxStdScore1.Text));
parameter4.SqlDbType = SqlDbType.Float;
command.Parameters.Add(parameter);
command.Parameters.Add(parameter2);
command.Parameters.Add(parameter3);
command.Parameters.Add(parameter4);
connection.Open();
if (command.ExecuteNonQuery() == 1)
{
textBoxStdScore1.Clear();
textBoxStdID1.Clear();
MessageBox.Show(this, ".نمره جديد با موفقيت ثبت شد", "", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
connection.Close();
}



این که کد خودمه
اما بررسیش کردم فرقی نکرد

Mahmoud.Afrad
جمعه 02 خرداد 1393, 22:20 عصر
بهتره متن خطا رو هم نمایش بدی تا در آینده هم اگر کاربران با خطایی برخورد کردند بتونند درست به شما گزارش بدن.

catch (Exception ex)
{
MessageBox.Show("خطایی رخ داده است" + ex.Message);
}

aghayex
جمعه 02 خرداد 1393, 22:56 عصر
دوست عزیز این کد اولتون بود


SqlParameter parameter = new SqlParameter("p1", lessonCode.ToString());

و این کد من


SqlParameter parameter = new SqlParameter("@p1", lessonCode.ToString());

تفاوت این دو در نام پارامتر هست شما در کوئریتون از پارامتری با عنوان @p1 اسم بردید اما در بخش تعریف پارامتر گفتید p1 و این اولین خطا هستش

prg_mail
شنبه 03 خرداد 1393, 09:23 صبح
بهتره متن خطا رو هم نمایش بدی تا در آینده هم اگر کاربران با خطایی برخورد کردند بتونند درست به شما گزارش بدن.

catch (Exception ex)
{
MessageBox.Show("خطایی رخ داده است" + ex.Message);
}



این خطا رو دارد

prg_mail
شنبه 03 خرداد 1393, 18:04 عصر
ضمن تشکر از دوستان مشکل حل شد.