PDA

View Full Version : سوال: چرا sql command درست کار نمی کند؟



voice.of.silence
دوشنبه 01 آبان 1391, 21:41 عصر
سلام دوستان:
من از این چند خط کد برای وارد کردن اطلاعات به پایگاه داده استفاده می کنم. اما نمی دانم که چرا درست کار نمی کنه..
لطفا مرا در حل این مشکل راهنمایی نمایید.

تعریف اختصارات به کار رفته:
fn=full name, un=user name, hp= home phone, wp=work phone, sp=self phone, ea= email address, ha= home address, wa= work address
از همه ی مورد فوق در ساخت جدول پایگاه داده و همچنین در محیط ویژوال استفاده شده است.
امیدوارم که موارد فوق در خواندن کد ذیل شما را کمک کند.

sqlConnection1.Open();

SqlCommand cmd = new SqlCommand("insert into bpbt values(fn,hp,wp,sp,ea,ha,wa", sqlConnection1);

cmd.Parameters.AddWithValue("fn", txtfn.Text.ToString());
cmd.Parameters.AddWithValue("hp", txthp.Text.ToString());
cmd.Parameters.AddWithValue("wp", txtwp.Text.ToString());
cmd.Parameters.AddWithValue("sp", txtsp.Text.ToString());
cmd.Parameters.AddWithValue("ea", txtea.Text.ToString());
cmd.Parameters.AddWithValue("ha", txtha.Text.ToString());
cmd.Parameters.AddWithValue("wa", txtwa.Text.ToString());

try
{
cmd.ExecuteNonQuery();
}
catch (SqlException)
{
MessageBox.Show("Can not add new info into the database. Application faced with problem. To solve it, ask developers as soon as you can.");
}
sqlConnection1.Close();



با سپاس.
Voice of Silence

morteza271
دوشنبه 01 آبان 1391, 21:48 عصر
کامند شما باید به صورت زیر باشه :
SqlCommand cmd = new SqlCommand("insert into bpbt values(@fn,@hp,@wp,@sp,@ea,@ha,@wa", sqlConnection1);
شما باید پارامترها رو با @ مشخص کنید.
در هنگام ست کردن مقدار آنها هم همینطور :
cmd.Parameters.AddWithValue("@fn", txtfn.Text.ToString());
cmd.Parameters.AddWithValue("@hp", txthp.Text.ToString());
cmd.Parameters.AddWithValue("@wp", txtwp.Text.ToString());
cmd.Parameters.AddWithValue("@sp", txtsp.Text.ToString());
cmd.Parameters.AddWithValue("@ea", txtea.Text.ToString());
cmd.Parameters.AddWithValue("@ha", txtha.Text.ToString());
cmd.Parameters.AddWithValue("@wa", txtwa.Text.ToString());

voice.of.silence
دوشنبه 01 آبان 1391, 22:26 عصر
دوست عزیز:
من تغییرات زیر را ایجاد کردم اما هنوز هم کدها به دررستی اجرا نمی شوند و پیام مربوط به catch اجرا می شود.

sqlConnection1.Open();

SqlCommand cmd = new SqlCommand("insert into bpbt values(@fn,@hp,@wp,@sp,@ea,@ha,@wa", sqlConnection1);

cmd.Parameters.AddWithValue("@fn", txtfn.Text.ToString());
cmd.Parameters.AddWithValue("@hp", txthp.Text.ToString());
cmd.Parameters.AddWithValue("@wp", txtwp.Text.ToString());
cmd.Parameters.AddWithValue("@sp", txtsp.Text.ToString());
cmd.Parameters.AddWithValue("@ea", txtea.Text.ToString());
cmd.Parameters.AddWithValue("@ha", txtha.Text.ToString());
cmd.Parameters.AddWithValue("@wa", txtwa.Text.ToString());

try
{
cmd.ExecuteNonQuery();
}
catch (SqlException)
{
MessageBox.Show("Can not add new info into the database. Application faced with problem. To solve it, ask developers as soon as you can.");
}
sqlConnection1.Close();

voice.of.silence
دوشنبه 01 آبان 1391, 22:27 عصر
دوست عزیز:
من تغییرات زیر را ایجاد کردم اما هنوز هم کدها به دررستی اجرا نمی شوند و پیام مربوط به catch اجرا می شود.

sqlConnection1.Open();

SqlCommand cmd = new SqlCommand("insert into bpbt values(@fn,@hp,@wp,@sp,@ea,@ha,@wa", sqlConnection1);

cmd.Parameters.AddWithValue("@fn", txtfn.Text.ToString());
cmd.Parameters.AddWithValue("@hp", txthp.Text.ToString());
cmd.Parameters.AddWithValue("@wp", txtwp.Text.ToString());
cmd.Parameters.AddWithValue("@sp", txtsp.Text.ToString());
cmd.Parameters.AddWithValue("@ea", txtea.Text.ToString());
cmd.Parameters.AddWithValue("@ha", txtha.Text.ToString());
cmd.Parameters.AddWithValue("@wa", txtwa.Text.ToString());

try
{
cmd.ExecuteNonQuery();
}
catch (SqlException)
{
MessageBox.Show("Can not add new info into the database. Application faced with problem. To solve it, ask developers as soon as you can.");
}
sqlConnection1.Close();

morteza271
دوشنبه 01 آبان 1391, 22:32 عصر
یه چیزی رو من یادم رفت بهتون بگم :
ستون های جدول bpbt چندتاست؟ اگه تعداد اونا بیشتر از تعداد پارامترهایی است که گذاشتین کوئری رو به صورت زیر تغییر بدین :
insert into bpbt(fn,hp,wp,sp,ea,ha,wa) values(@fn,@hp,@wp,@sp,@ea,@ha,@wa)
عباراتی که در پرانتز اول هستند نام ستون های متناظر با پارامترها باید باشه!
در ضمن من الان یه چیزی به ذهنم رسید آیا شما واقعا پرانتز بسته رو نذاشتین؟؟!! یا اینجا اشتباه شده؟!!! منظورم این قسمته :
"insert into bpbt values(@fn,@hp,@wp,@sp,@ea,@ha,@wa"
چرا پرانتز بسته نشده؟؟؟!!!!

اگه بازم مشکل برطرف نشد قسمت catch رو به صورت زیر بنویسید و متن خطا رو بذارین اینجا :
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

voice.of.silence
سه شنبه 02 آبان 1391, 15:52 عصر
من همه ی این راه ها را انجام دادم اما نتیجه نگرفتم.
زمانی که از sqlconnection1 استفاده می کنم برنامه با خطا روبه رو نمی شه اما اطلاعات را به جدول اضافه نمی کنه.
زمانی که از con استفاده می کنم برنامه با خطا روبه رو میشه .
Con کنکشن اصلی برنامه است و باید با آن کار را بیفته .
دوست عزیز من Source این برنامه را در اینجا قرار می دم و امیدوارم که شما بتونید مشکل آن را بر طرف نمایید. این برنامه نیاز مند Dotnet frmaework 4.5 هست .
همچنین نوع پایگاه داده ی به کار رفته از نوع local database می باشد.

maythammsp2000
سه شنبه 02 آبان 1391, 16:03 عصر
من همه ی این راه ها را انجام دادم اما نتیجه نگرفتم.
زمانی که از sqlconnection1 استفاده می کنم برنامه با خطا روبه رو نمی شه اما اطلاعات را به جدول اضافه نمی کنه.
زمانی که از con استفاده می کنم برنامه با خطا روبه رو میشه .
Con کنکشن اصلی برنامه است و باید با آن کار را بیفته .
دوست عزیز من Source این برنامه را در اینجا قرار می دم و امیدوارم که شما بتونید مشکل آن را بر طرف نمایید. این برنامه نیاز مند Dotnet frmaework 4.5 هست .
همچنین نوع پایگاه داده ی به کار رفته از نوع local database می باشد.

قبل از اجراي كوئري باد كانكشنتو باز كني


sqlconnection1.open()
cmd.ExcuteNonQuery()
sqlconnection1.close()

voice.of.silence
سه شنبه 02 آبان 1391, 16:15 عصر
من همه ی موارد را امتحان کردم اما با مشکل رو به رو شدم لطفا شما هم با هر دو connection امتحان کنید.
connection اصلی برنامه con هست لطفا با آن هم امتحان نمایید.

morteza271
سه شنبه 02 آبان 1391, 16:56 عصر
من همه ی موارد را امتحان کردم اما با مشکل رو به رو شدم لطفا شما هم با هر دو connection امتحان کنید.
connection اصلی برنامه con هست لطفا با آن هم امتحان نمایید.

نه دیگه دوست عزیز. همه کارها رو انجام ندادین؟!!!! به پس قبلی من مراجعه کنید و دو کاری که گفتم رو انجام بدین اگه بازم خطا داد متن خطا رو بذارین تا کمکتون کنیم.

پروژتون رو نتونستم با VS2010 باز کنم (فک کنم شما با VS2012 نوشتین!!)

voice.of.silence
سه شنبه 02 آبان 1391, 20:37 عصر
من این رو به dotnet framework4 تغییر دادم و امیدوارم که شما بتونید با VS2010 باز کنید.

شرلوک هلمز
چهارشنبه 03 آبان 1391, 01:01 صبح
برنامه با 2010 باز نمی شه
query را داخل دیتابیس یکبار اجرا کن ببین مشکلی syntax نداشته باشه . من همیشه اول query را به تنهایی در دیتابیس اجرا میکنم که ایراد syntax نداشته باشه