PDA

View Full Version : تعریف متغییر در sql و استفاده در c#



r4hgozar
جمعه 29 فروردین 1393, 19:21 عصر
سلام. من برای اینکه بتونم داده های تکراری رو در بانکم اطلاعات بدم. چطوری می تونم متغییری رو در sql تعریف کنم و چطوری می تونم اون رو در C#‎‎‎ استفاده کنم.ممنون میشم یک کد کوچیک بدین.من قبلا از کد زیر برای تکراری بودن استفاده می کردم.

if (db.tbl_student.Any(o => o.Stud_Id == "ali" ))
{
MessageBox.Show("شماره ملی تکراری است");
}



یک سوال دیگه هم داشتم اینه که آیا این روش رو استفاده کنم بهتره و یا اینکه متغییر در sql تعریف کنم و در C#‎‎‎ استفاده کنم؟

Mahmoud.Afrad
جمعه 29 فروردین 1393, 19:26 عصر
دقیقا سوالت چیه؟ میخوای چه کار کنی؟ برای چی به این متغیر نیاز داری؟

r4hgozar
جمعه 29 فروردین 1393, 21:00 عصر
می خوام چند تا شرط رو در sql بررسی کنم به طوری که اگه دادی تو فیلد های مختلف تکراری بود در بانک ادد نشه و در سی شارپ هم پیام بده.
این کار رو در sql با if , else انجام میدم. می خوام بدونم چطوری باید متغییری در sql تعریف کنم و اون رو در سی شارپ استفاده کنم. روش قبلی هم که استفاده می کردم رو بالا نوشتم.
سوالم دومم از شما و دوستان و اساتید اینه که کدوم روش سریعتر و بهتره؟

Mahmoud.Afrad
جمعه 29 فروردین 1393, 21:04 عصر
میتونی با if ... else توی سی شارپ انجام بدی.
از کد sql هم مثال بزن اگر نمیتونی معادلش رو بنویسی.

r4hgozar
جمعه 29 فروردین 1393, 21:12 عصر
if (Exists(select * from TblName where StudentID = @stdid AND DayOfWeek = @day AND Time = @time))
{
-- دانشجو قبلا در این روز هفته و در این ساعت، درسی رو اخذ کرده
}
else Exists(select * from TblName where Studentname= @studname))
{
اینجا باید از متغییر استفاده کنم بلد نیستم
}





و اینکه چطور در سی شارپ استفاده کنم.
و کدوم روش بهتره. یعنی روش استفاده از متغیر و یا روش که در سوالم زدم.

Mahmoud.Afrad
جمعه 29 فروردین 1393, 21:29 عصر
exists رو که میتونی با متد Any پیاده کنی.
مقدار اون متغیر چیه؟
با همین linq کار کن. اون متغیر هم اگر حاصل محاسبات هست میتونی با linq مقدارش رو بدست بیار و در یک متغیر در سی شارپ استفاده کنی.

mehdi.mousavi
شنبه 30 فروردین 1393, 10:32 صبح
if (Exists(select * from TblName where StudentID = @stdid AND DayOfWeek = @day AND Time = @time))
{
-- دانشجو قبلا در این روز هفته و در این ساعت، درسی رو اخذ کرده
}
else Exists(select * from TblName where Studentname= @studname))
{
اینجا باید از متغییر استفاده کنم بلد نیستم
}


و اینکه چطور در سی شارپ استفاده کنم. و کدوم روش بهتره. یعنی روش استفاده از متغیر و یا روش که در سوالم زدم.

سلام.
میتونم بپرسم چه نیازی به داشتن مقدار در سمت Client دارید؟ شما میتونید Stored Procedure ای به اسم RegisterSubject (بطور مثال)
تعریف کنید و کلیه عملیات مورد نیاز برای ثبت درس توسط دانشجو در زمان مورد نظر رو در اون پیاده سازی کنید. این SP خودش میتونه SP ی دیگه
ای به اسم AddStudent و ... رو Call کنه و ... حالا در برنامه خودتون، کافیه RegisterSubject رو Call کنید (فارغ از اینکه از چه تکنولوژی ای برای کار
با بانک استفاده می کنید). بدین ترتیب دیگه نیازی نیست تا با چندین Round-Trip به بانک، این کار رو انجام بدید.

موفق باشید.

r4hgozar
شنبه 30 فروردین 1393, 11:35 صبح
اقا مهدی من نمی تونم دروغ بگم تمام چیزی رو که گفتین متوجه شدم اما کلیت بحث شما رو فهمیدم.
من در حال یادگیری مباحث هستم و برای خودم یک پروژه رو تعریف کردم تا در حین انجام کار به مشکلاتم مواجه بشم. این پروژه یک سیستم آموزشی کوچک هست مثلا یک سیستم کلاس زبان.
در این سیستم ما چند جدول داریم، جدول دانشجو و جدول معلم جدول حساب و یک جدول هم دارم برای اینکه در واقع یک رابطه هست اما من باید چند شرط رو بررسی کنم.
اینکه1- یک دانشجو در یک ترم 2 کلاس در یک سطح نتونه بگیره.
3- یک کلاس در یک ترم و در یک زمان نتونه 2 بار رزرو بشه.
و.......
برای اینکه این شرط ها رو بررسی کنم یک جدول ساختم و فیلده ای خارجی رو در اون قرار دادم.
الان هم می خوام چند تا شرط رو در این جدول بررسی کنم. و اگه هر کدوم از اینها تکراری بود یک پیام بدم به کاربر.گمن وقتی یک شرط بود در پروسیجرم از

if (Exists(select * from TblName where StudentID = @stdid AND DayOfWeek = @day AND Time = @time))


و در سی شارپم از

if (db.tbl_student.Any(o => o.Stud_Id == "ali" ))
{
MessageBox.Show("شماره ملی تکراری است");
}



این 2 قطعه کد استفاده می کردم. حالا هم می تونم از if , else های متوالی استفاده کنم . اما می خوام بدونم بهترین روش و بهینه ترین چیه. و تجربه دوستان و اساتید در این مورد چیه؟
ممنون میشم یک مثال و یک تکه کد کوچک بهم بدین.
ممنون میشم راهنماییم کنید.