PDA

View Full Version : مشكل دستور cmd.ExecuteNonQuery()



ali_za
چهارشنبه 17 شهریور 1389, 23:45 عصر
با سلام
مشكل ظاهر شدن اين پنجره هنگام تست برنامه چيه؟ اينو اضافه كنم هنگام اجرا به هيچ وجه خطا نميده (برنامه در ASP.NET 2008 و بانك هم در sqlserver2008 نوشته ام) بعد از اينكه داده ها وارد فرم نموده و دكمه ثبت رو ميزنم برنامه مياد داخل vs.net واين پنجره ظاهر ميشه لطف كنيد(ولي اينو مطئنم كه هيچ كدي رو اشتباه ننوشتم) لطف كنيد راهنمايي بفرماييد
با سپاس فراوان

keyvan_n
پنج شنبه 18 شهریور 1389, 00:48 صبح
پیشنهاد می کنم یک بار برنامه رو CLean و Rebuild کنید.
اگه این کد ها در یک DLL دیگه قرار داره، مجدداً Reference بدین.
به نظرم کامپایلر قاطی کرده و محل خطا رو اشتباه نشون میده.

aminghaderi
پنج شنبه 18 شهریور 1389, 01:06 صبح
این تاپیک رو ببین به دردت نمی خوره...
http://barnamenevis.org/forum/showthread.php?t=245416
موفق باشی.

ali_za
پنج شنبه 18 شهریور 1389, 11:01 صبح
پیشنهاد می کنم یک بار برنامه رو CLean و Rebuild کنید.
اگه این کد ها در یک DLL دیگه قرار داره، مجدداً Reference بدین.
به نظرم کامپایلر قاطی کرده و محل خطا رو اشتباه نشون میده.

سلام
آقا مشکل همچنان به قوت خودش باقیه!!!!!!!!!!!!!!! به نظر من فکر کنم مشکل از خود نرم افزار باشه ولی مطمئن نیستم چون برنامه با بانک ارتباط برقرار میکنه ولی موقع ذخیره کردن اطلاعات تو دیتابیس این پنجره نشون داده میشه!!!!
آقای قادری در تاپیک مورد نظر شما هم چیزی پیدا نکردم
فکرکنم تو فوروم مایکروسافت بزارم شاید اونا جواب بدن!!!!!!!!!!!!!!!!!!
با سپاس

aminghaderi
پنج شنبه 18 شهریور 1389, 11:47 صبح
آقای قادری در تاپیک مورد نظر شما هم چیزی پیدا نکردممن از راه حلی که اونجا نوشتم حدود 2 ساله دارم استفاده می کنم و هیچ مشکلی هم نداره ، ببینید نمی شه ازروی اون الگو گرفت؟!؟!
من کد شما رو در عکس دیدم (تاجایی که قابل دیدن بود) به نظر من کد رو دارید اشتباه می نویسید ، و به نظر من مشکلی از سیستم نیست.:اشتباه:
اون کلاس هایی که شما استفاده می کنید برای ارتباط با db من هم در مثال استفاده می کنم .
من می گم شما کل CodeFile رو اینجا بزارید ، شاید مشکل از Using ها یا قسمت های دیگر باشه؟؟
و اینکه شاید هم سر VS و SQL باشه؟!؟!؟
من ابتدای کوچ به VS2008 عادت کرده بودم ابتدا ویژوال رو نصب می کردم و بعد اسکیوال و به این دلیل VS 2008 هم با SQL مچ نمی شد و مشکلاتی داشتم ، سر همین موضوع یه بحث مفصل با بچه های تالار داشتیم ، و بعد راهنمایی یکی از اساتید SQL ، متوجه شدم ابتدا SQL و بعد VS Vرو نصب کنم ، وبعد این کار مشکلات به طور کل رفع شد.:کف:

ali_za
پنج شنبه 18 شهریور 1389, 13:11 عصر
من از راه حلی که اونجا نوشتم حدود 2 ساله دارم استفاده می کنم و هیچ مشکلی هم نداره ، ببینید نمی شه ازروی اون الگو گرفت؟!؟!
من کد شما رو در عکس دیدم (تاجایی که قابل دیدن بود) به نظر من کد رو دارید اشتباه می نویسید ، و به نظر من مشکلی از سیستم نیست.:اشتباه:
اون کلاس هایی که شما استفاده می کنید برای ارتباط با db من هم در مثال استفاده می کنم .
من می گم شما کل CodeFile رو اینجا بزارید ، شاید مشکل از Using ها یا قسمت های دیگر باشه؟؟
و اینکه شاید هم سر VS و SQL باشه؟!؟!؟
من ابتدای کوچ به VS2008 عادت کرده بودم ابتدا ویژوال رو نصب می کردم و بعد اسکیوال و به این دلیل VS 2008 هم با SQL مچ نمی شد و مشکلاتی داشتم ، سر همین موضوع یه بحث مفصل با بچه های تالار داشتیم ، و بعد راهنمایی یکی از اساتید SQL ، متوجه شدم ابتدا SQL و بعد VS Vرو نصب کنم ، وبعد این کار مشکلات به طور کل رفع شد.:کف:

با سلام دوست عزیز و تشکر بابت جوابتون
عرض شود که نصب sqlserver2008 بعد از نصب vs.net2008 امکان پذیر نیست یعنی ابتدا شما باید sql رو نصب و سپس اقدام به نصب vs.net2008 یا 2010 بکنید د رمورد کد تا 99 درصد مطمئنم کد v, درست نوشتم .
من یک فرم ثبت نام طراحی کردم واطلاعات کاربران سایت رو داخل دیتابیس ذخیره میکنم (کسانی که اقدام به ثبت نام می کنند ) این کد ها در حقیقت کد مربوط به همین صفحه است همانطور که گفتم موقع اجرا هیچ اروری نمیده به طور مثال زمانی که من به عنوان یه کاربر می خواهم اطلاعات رو ثبت بکنم یعنی زمانیکه دکمه ثبت نام رو فشار میدم برنامه پس از دو ثانیه میاد وارد Vs.net میشه وهمین پیام رو میده ولی این یک ارور نیست .


این هم کد ها:


protected void Button1_Click(object sender, EventArgs e)
{
string photopath, filename = "nopic.png";
if (fup.FileName != "")
{
if (fup.FileName.Substring(fup.FileName.LastIndexOf(".")) == ".jpeg" || fup.FileName.Substring(fup.FileName.LastIndexOf(".")) == ".jpg" || fup.FileName.Substring(fup.FileName.LastIndexOf(".")) == ".png")
{
filename = fup.FileName;
photopath = Server.MapPath("~") + "\\images";
fup.SaveAs(photopath + "\\" + filename);

}

}
SqlConnection con = new SqlConnection("data source=.;initial catalog=librarydb;integrated security=true;");
string strcmd = "insert to users(username,psw,fname,lname,sex,email,img) ,values(@username,@psw,@fname,@lname@,@sex,@email, @img)";
SqlCommand cmd = new SqlCommand(strcmd, con);
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@username", txtusername.Text);
cmd.Parameters.AddWithValue("@psw", txtpass.Text);
cmd.Parameters.AddWithValue("@fname", txtname.Text);
cmd.Parameters.AddWithValue("@lname",Txtlastname.Text);
if (RadioButton1.Checked)
cmd.Parameters.AddWithValue("@sex", 0);
else
cmd.Parameters.AddWithValue("@sex", 1);
cmd.Parameters.AddWithValue("@email", Txtemail);
cmd.Parameters.AddWithValue("@img", filename);
con.Open();
cmd.ExecuteNonQuery();
con.Close();



} در name space هم برای ارتباط با بانک این کد رو نوشتم :



using System.Data.SqlClient;


در کد فوق نقطه مقابل data source برابر همان localhost هست هیچ تفاوتی نمی کند
با تشکر فراوان

persian_bigboy
پنج شنبه 18 شهریور 1389, 19:11 عصر
سلام دوست من


cmd.Parameters.AddWithValue("@email", Txtemail);
cmd.Parameters.AddWithValue("@img", filename);

فکر کنم یک .Text کم گذاشتی ،


cmd.Parameters.AddWithValue("@email", Txtemail.Text);
cmd.Parameters.AddWithValue("@img", filename.Text);

ali_za
پنج شنبه 18 شهریور 1389, 19:35 عصر
سلام دوست من


cmd.Parameters.AddWithValue("@email", Txtemail);
cmd.Parameters.AddWithValue("@img", filename);
فکر کنم یک .Text کم گذاشتی ،


cmd.Parameters.AddWithValue("@email", Txtemail.Text);
cmd.Parameters.AddWithValue("@img", filename.Text);

با سلام دوست من
filename متغیری است برای گرفتن عکسها که آن رو با پسوند های مختلف تعریف کردم که کاربر بتونه از طریق فایل آپلود در مسیری مشخص کردم وارد فولدر images بشه و نیازی به تکس نداره ضمنا دوست عزیز این جور خطاها رو زمان اجرا سیستم اجازه اجرا نمیده وبلافاصله حتی خط کد رو مشخص می کنه در صورتی که برنامه من اجرا میشه ولی موقع ذخیر کردن داده در بانک این پنجره ظاهر میشه نه اینکه ارور بده
با تشکر

aminghaderi
پنج شنبه 18 شهریور 1389, 19:46 عصر
بله مشکلی به چشم نمی خوره.
پارمترها رو قبل [SqlCommand قرار بدید ببینید ، تغییری به وجود نمی یاد؟؟
به جای استفاده از متغیر ها در پرامتر به صورت مستقیم رشته (مثلا:"Hello")رو وارد کنید ،
ببینید مشکل از ارسال متغیر ها به پارمتر نیست؟؟؟
--------------------

در صورتی که برنامه من اجرا میشه ولی موقع ذخیر کردن داده در بانک این پنجره ظاهر میشه نه اینکه ارور بده
خطاهای بین vs و sql همین طوری خودشون رو بیان می کنند ، من بارها و بارها با این طریق خطاها مواجه شدم.

ali_za
پنج شنبه 18 شهریور 1389, 23:08 عصر
با سلام
منشاء مشکل رو پیدا کردم یه حواس پرتی اون هم از نوع شاهکارش دستور insert into رو به صورت insert to نوشته بودم
تشکر از همه بچه ها به خصوص آقای قادری گل:گیج: