PDA

View Full Version : سوال: تولید یک عدد خاص و غیر تکراری



zeinab-es'haghi
جمعه 14 مرداد 1390, 19:35 عصر
در طراحی سایت ،در صفحه ی عضویت برای وارد کردن اطلاعات در دیتابیس باید هر دفعه به فیلد userID در جدول users یک عدد خاص و غیر تکراری اختصاص بدهم که نمی دونم چه طور این کار رو باید انجام بدم.فکر کردم که میشه بیشترین userID رو با دستور زیر پیدا کنم و به اون یکی اضافه کنم تا عدد جدیدی به دست بیاد.
static SqlDataReader dr;
cmd.CommandText = "select MAX(userID) from Users";
dr1 = cmd.ExecuteReader();
string a1 = dr1["userID"].ToString();//id ghabli ra begirad va ezafe konad???
a1++;
اما a1از نوع string می باشد و دستور toIntهم موجود نیست تا بخوام a1++رو انجام بدم!! و این راه شدنی نیست .
کسی می تونه راهی پیشنهاد کنه؟

hjran abdpor
جمعه 14 مرداد 1390, 20:15 عصر
با سلام.
از کلاس های Random یا Guid استفاده کنید!!!!!!!

hjran abdpor
جمعه 14 مرداد 1390, 20:21 عصر
با سلام.
از کلاس های Random یا Guid استفاده کنید!!!!!!!

کلاس Random

Int32 int1;
Randomize
Random ra = new Random();
int1 = ra.Next(2, 1000) * 2;



.




برای کلاس گاید تو گوگل یک عالمه کد هست سرچ کن

zeinab-es'haghi
شنبه 15 مرداد 1390, 02:25 صبح
کلاس Random

Int32 int1;
Randomize
Random ra = new Random();
int1 = ra.Next(2, 1000) * 2;



.




برای کلاس گاید تو گوگل یک عالمه کد هست سرچ کن

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

Javad.Kashi
شنبه 15 مرداد 1390, 05:17 صبح
سلام دوستان
چنین روشی روش معمول و صحیحی نیست.مدیریت این مبحث در Table Design است . که نحوه انجام آن در SQL Server به شکل زیر می باشد:
روال صحیح کار به این صورته که شما ستون UserID (که نوع آن INT و یا bigint است ) را Primary key قرار می دهید.(به معنای کلید اصلی که اجازه درج رکورد تکراری را نمی دهد.)
سپس به منظور Auto Increment کردن این ستون ( یعنی دونه دونه در هر رکورد یکی به آن اضافه شود ) خاصیت Identity آن را برابر با True قرار می دهید.

یا علی