PDA

View Full Version : سوال: sqlexception was unhandled چطور میشه این error رو برطرف کرد؟



hooman2usa
دوشنبه 17 بهمن 1390, 21:46 عصر
سلام و وقت بخیر خدمت دوستان گرامی
برای اتصال برنامه C#‎ به sql server از طریق ویزارد ویژوال استودیو اتصال انجام میشود
ولی از طریق کد نویسی errori به نام S82128 را میدهد و نوشته است login faild for user sa لطفا کمکم کنید مشکل از کجاست این کد اتصال منه

SqlConnection objConnection = new SqlConnection(
"server=localhost;database=Library;" +
"User Id=sa;password=");
دقیقا وقتی میخوام objConnection.open(); این ایراد رو میگیره.
میشه کسی بگه عیب کار کجاست حتی یوزر رو هم عوض کردم ولی بازم جواب نداد.

amin.bdn
دوشنبه 17 بهمن 1390, 23:51 عصر
مشکل فقط تو sql server و بویژه اکانت sa جستجو کنید! احتمال می دم یا مد autentication سرور mix نیست و یا sa فعال نیست!

anahita6
دوشنبه 17 بهمن 1390, 23:57 عصر
معلومه موقع open کردن ایراد میگیره چون اون موقع هست که از connection string استفاده میشه . که اون هم چون بین تگ کد نذاشتی درست معلوم نیست چیه .این بستگی به کانکشن ات داره تو اس کیو ال اتصال sql and windows رو انتخاب کردی یا ویندوز ؟ اگه اس کیوال انتخاب کردی پسورد sa رو ست کردی یا نه .شما یک بار هم با اتصال غیر اس کیو ال متصل شو ببین مشکل حل میشه یا نه . یعنی به جای user id و passو,
integrated security رو برابر true یا sspi قرار بده

hooman2usa
سه شنبه 18 بهمن 1390, 12:10 عصر
مرسی از لطف دوستان ولی با اینکه من در sql-server یوزر رو عوض کردم و کارهای فوق رو نیز انجام دادم ولی مشکل حل نشد با ویزارد میشه با کد نویسی نمیشه مشکل همینه الان همون ایراد البته با تغییر کد string این ایراد رو میده82176

anahita6
سه شنبه 18 بهمن 1390, 12:58 عصر
خط objectconnection.open رو ردکرده پس مشکل کانکشن استرینگ ات حل شده وگرنه تو همون خط بالایی eror میگرفتی .الان مشکل ات رو باید تو کد اس کیو ال پیدا کنی

hooman2usa
سه شنبه 18 بهمن 1390, 16:44 عصر
تشکر از پاسخ شما درسته ولی اگه کد اس کیو ال اشکال داره چرا داخل خود اس کیو ای دقیقا جواب میده ؟!

mahmoodof
سه شنبه 18 بهمن 1390, 17:09 عصر
سلام و خسته نباشيد دوستان گرامي
چون قسمتي رو نتونستم ، پيدا كنم كه مربوط به مديريت خطا در پايگاه داده باشه ! با خودم فكر كردم همينجا شايد بهترين جا براي عنوان كردن سوالم باشه !
من دارم يه سايت ساده طراحي ميكنم كه بتونه كاربر ثبت نام كنه و ....
همينطور كه ميدنيم "نام كاربري" بايد كليد تعريف بشه و كاربرا نبايد با نام كاربري تكراري ثبت نام كنن ، من چنين مشكلي رو ميخوام رفع كنم كه كسي نتونه با نام كاربري تكراري ثبت نام كنه ! ممنون ميشم كه كمكم كنيد.
عكس مربوط به خطا :
82184
موفق باشيد ، يا علي...

amin.bdn
سه شنبه 18 بهمن 1390, 21:23 عصر
کدتو با ساختار زیر بنویس

{
command.ExecuteNonQuery();
}
catch(SqlException e)
{
if (e.Number == 2601 || e.Number == 2627)
{
return false;
}
else
{throw e;}
}

اگه اشتباه نکنم کد 2601 مربوط به تکراری بودن کلید اصلی و 2627 مربوط به نقض تکراری بودن ایندکس می باشد. و برگشت مقدار false به معنی عدم امکان ثبت با نام کاربری وارد شده خواهد بود

anahita6
سه شنبه 18 بهمن 1390, 22:06 عصر
تشکر از پاسخ شما درسته ولی اگه کد اس کیو ال اشکال داره چرا داخل خود اس کیو ای دقیقا جواب میده ؟!
خیلی واضح هست داره دقیقا میگه سینتکس اطراف bookstudent مشکل داره.
بنده خدا داره خودش میگه ایراد رو.
گفتم که اگه ایراد در کانکشن بود اصلا آبجکت کانکشن ات باز نمیشد ولی این خط رو رد کرده
ممکن هست تو کانکت کردن محتویات کامند تکست ایراد باشه به هر حال یه ایراد خیلی جزیی تو خود کد اس کیو ال هست این نظر منه. حالا خودت میدونی

majid.gymnast
چهارشنبه 19 بهمن 1390, 08:30 صبح
مرسی از لطف دوستان ولی با اینکه من در sql-server یوزر رو عوض کردم و کارهای فوق رو نیز انجام دادم ولی مشکل حل نشد با ویزارد میشه با کد نویسی نمیشه مشکل همینه الان همون ایراد البته با تغییر کد string این ایراد رو میده82176
سلام
مشکل از دستورات اس کیو الت است اگر این دستورات در اس کیو ال جواب میده ولی اینجا خطا میده چون تو برنامت تغییر میکنه برای اینکه بفهمی باید یه breakpoint بزاری بعد دستورت رو کپی کنی تو اس کیو ال تا ببینی کجاش تغییر کرده ولی فکر کنم جدولی به نام BookStudent نداشته باشی.

mahmoodof
پنج شنبه 20 بهمن 1390, 10:10 صبح
سلام دوست عزيز
من كد رو به صورت زير نوشتم :
catch (SqlException e)
{
if (e.Number == 2601 || e.Number == 2627)
{
Label14.Text = "نام كاربري تكراري است";
}
else
{ throw e; }
}
ولي متاسفانه خطاي زير برام اومد:


A local variable named 'e' cannot be declared in this scope because it would give a different meaning to 'e', which is already used in a 'parent or current' scope to denote something else

mhsmity
پنج شنبه 20 بهمن 1390, 10:57 صبح
یگ dataset از پایگاه دادت بساز
وقتی ساختی از رشته اتصال این شی برای برنامه ا ستفاده کن

amin.bdn
جمعه 21 بهمن 1390, 14:04 عصر
به نظر مياد قبل از اين كد متغيري با اين نام "e" تعريف كردي.... اسمشو بزار exc بايد درست شود

mahmoodof
شنبه 22 بهمن 1390, 13:52 عصر
سلام
آره حدستون درست بود.متغير ديگه اي با نام e وجود داشت.
البته e رو من تعريف نكردم.نميدونم e چيه ؟؟؟؟؟؟
ممنونم
يا علي...