جلو گیری از ورود دو نام کاربری مثل هم

rayes

عضو جدید
سلام
من دارم یه برنامه جعبه لایتنر با#cمینویسم
یه جدول userدارم که دوتا ستون userوpassداره .
از دوتا تکس باکس ورودی ها وارد جدول میشن.
میخوام که چندین کاربر بتونن از برنامه استفاده کنن حالادو تا مشکل دارم

1)میخوام تو ستون user دوتا user مثل هم وارد نشه.
2)یکی دیگه اینکه برا اینکه این user فقط کلمات خودشو ببینه میخوام userرو از یک فرم به فرم دیگه ببرم.

ممنون میشم اگه کمکم کنید.
 

taghtagh

عضو جدید
سلام :) من یه سری توضیح کلی میتونم بدم راجع به اینکه باید چیکار کنین امیدوارم به کارتون بیاد : برا اینکه یوزر تکراری وارد نشه ، شما تو صفحه ثبت نام کاربر ، یا صفحه ای که یوزر رو تعریف میکنید باید یه کوئری بنویسید که ببینید رکوردی نو دیتا بیس هست که این یوزرنیم رو داشته باشه یا نه ، اگه همچین رکوردی وجود داشته باشه باید دو حالت رو در نظر بگیرید : یکی اینکه کاربر جدید دارید وارد میکنید که در این صورت باید خطای کاربر تکراری به کاربر بدید که یوزرنیم رو عوض کنه و اگه در حال ویرایش رکوردی هستید که قبلا وجود داشته باید چک کنید که اون رکوردی که قبلا پیدا کردید با اینی که دارید ویرایش میکنید یکی هست یا نه و اگه نبود خطای یوزرنیم تکراری به کاربر نشون بدید.
در مورد سوال دومتون هم من درست نفهمیدم منظورتون چیه :D ولی از نظر طراحی دیتا بیس باید یه ریلیشن بین جدول یوزر و جدول کلماتتون باشه و موقع لاگین یوزر رو تو یه متغیر پابلیک بریزید که از فرمای دیگه بهش دسترسی داشته باشید و موقع کوئری گرفتن رو کلمات فقط کلمات خودش رو بیارید که بحثش چند روز پیشا همین جا بود : http://www.www.www.iran-eng.ir/showthread.php/337573-%D8%B3%D9%88%D8%A7%D9%84-%D8%A7%D8%B2-%D9%81%D8%B1%D9%85-login
م
وفق باشید
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
سلام
من دارم یه برنامه جعبه لایتنر با#cمینویسم
یه جدول userدارم که دوتا ستون userوpassداره .
از دوتا تکس باکس ورودی ها وارد جدول میشن.
میخوام که چندین کاربر بتونن از برنامه استفاده کنن حالادو تا مشکل دارم

1)میخوام تو ستون user دوتا user مثل هم وارد نشه.
2)یکی دیگه اینکه برا اینکه این user فقط کلمات خودشو ببینه میخوام userرو از یک فرم به فرم دیگه ببرم.

ممنون میشم اگه کمکم کنید.

در مورد اولی که با استفاده از ایندکس در بانک اطلاعاتی بر روی نام کاربری میتوانید جلوی ثبت نام کاربری های یکسان رو بگیرید :gol:
سئوال دوم رو درست متوجه نشدم :gol:
 

taghtagh

عضو جدید
در مورد اولی که با استفاده از ایندکس در بانک اطلاعاتی بر روی نام کاربری میتوانید جلوی ثبت نام کاربری های یکسان رو بگیرید :gol:
سلام و خسته نباشید ، میشه در این مورد توضیح بدید ؟ یعنی چی با استفاده از ایندکس روی نام کاربری ؟؟ بعد اگه روی نام کاربری ایندکس بزاریم ، باید چطوری از این طرف (کدنویسی) بفهمیم تکراریه و به کاربر پیغام بدیم ؟
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
سلام و خسته نباشید ، میشه در این مورد توضیح بدید ؟ یعنی چی با استفاده از ایندکس روی نام کاربری ؟؟ بعد اگه روی نام کاربری ایندکس بزاریم ، باید چطوری از این طرف (کدنویسی) بفهمیم تکراریه و به کاربر پیغام بدیم ؟

در قسمت Design جدول در دیتابیس، کلیک راست کنید و در بخش Indexes ، یک ایندکس Add کنید و فیلد را بر روی نام کاربری بذارید و IsUnige را True کنید. خود بانک در صورت تکراری بودن خطا بر میگردونه که کد مشخصی داره. کدش رو به راحتی میتونید پیدا کنید، کافیه تکراری ثبت کنید و در بخش Exception کد رو چک کنید :gol:
 

yamaha R6

کاربر حرفه ای
کاربر ممتاز
سلام و خسته نباشید ، میشه در این مورد توضیح بدید ؟ یعنی چی با استفاده از ایندکس روی نام کاربری ؟؟ بعد اگه روی نام کاربری ایندکس بزاریم ، باید چطوری از این طرف (کدنویسی) بفهمیم تکراریه و به کاربر پیغام بدیم ؟

کدتو اینجوری بنویس:

try

{

کد insert
}

catch
{
messageBox.Show("نام کاربری تکراریست");
}
 

taghtagh

عضو جدید
ممنون :) منتها من فکر نمیکنم try-catch راه درستی برای چک کردن تکراری بودن یه چیزی از سمت کاربر باشه، البته uniqe بودن رو چرا ، به نظرم خوبه که علاوه بر کد سمت sql هم چک بشه که داده ی تکراری وارد بانک نشه.
 

yamaha R6

کاربر حرفه ای
کاربر ممتاز
ممنون :) منتها من فکر نمیکنم try-catch راه درستی برای چک کردن تکراری بودن یه چیزی از سمت کاربر باشه، البته uniqe بودن رو چرا ، به نظرم خوبه که علاوه بر کد سمت sql هم چک بشه که داده ی تکراری وارد بانک نشه.

اگه می خوای خودت هم چک کنی این راه و امتحان کن:

کلیه نام ها رو از تو دیتا بیس select کن تو dataset بعد از اول تا آخرش تو یک حلقه for بشین یکی یکی چک کن ;)
 

A.S.Roma

عضو جدید
کاربر ممتاز
ممنون :) منتها من فکر نمیکنم try-catch راه درستی برای چک کردن تکراری بودن یه چیزی از سمت کاربر باشه، البته uniqe بودن رو چرا ، به نظرم خوبه که علاوه بر کد سمت sql هم چک بشه که داده ی تکراری وارد بانک نشه.
حق با شماست .
Try Catch یک راه هست که جواب میده اما بهترین راه نیست.
Performance Issue داره !
اصولا" برنامه نویس تا حدامکان باید از Exception دوری کنه !
شما کافیه یه SELECT ساده بزنی و چک کنی که آیا username قبلا" استفاده شده یا نه !
 

A.S.Roma

عضو جدید
کاربر ممتاز
اگه می خوای خودت هم چک کنی این راه و امتحان کن:

کلیه نام ها رو از تو دیتا بیس select کن تو dataset بعد از اول تا آخرش تو یک حلقه for بشین یکی یکی چک کن ;)
اینم از اون حرفا بودا !
WHERE پس واسه چیه !؟
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
ممنون :) منتها من فکر نمیکنم try-catch راه درستی برای چک کردن تکراری بودن یه چیزی از سمت کاربر باشه، البته uniqe بودن رو چرا ، به نظرم خوبه که علاوه بر کد سمت sql هم چک بشه که داده ی تکراری وارد بانک نشه.

زمانی که بانک وظیفه چک کردن را به عهده داره از این طریق باید متوجه شید :gol:

حق با شماست .
Try Catch یک راه هست که جواب میده اما بهترین راه نیست.
Performance Issue داره !
اصولا" برنامه نویس تا حدامکان باید از Exception دوری کنه !
شما کافیه یه SELECT ساده بزنی و چک کنی که آیا username قبلا" استفاده شده یا نه !

مخالفم. مدیریت بانک اطلاعاتی و کلاً امکانات بانک برای این موارد هست و این مورد هم Exception حساب نمیشه چون شما میدونید چیه و استثنای ناخواسته نیست و روش select هم اصولی نیست و به نظر من سر بار حساب میشه :gol:
 

yamaha R6

کاربر حرفه ای
کاربر ممتاز
زمانی که بانک وظیفه چک کردن را به عهده داره از این طریق باید متوجه شید :gol:



مخالفم. مدیریت بانک اطلاعاتی و کلاً امکانات بانک برای این موارد هست و این مورد هم Exception حساب نمیشه چون شما میدونید چیه و استثنای ناخواسته نیست و روش select هم اصولی نیست و به نظر من سر بار حساب میشه :gol:

من خودم همیشه sp تو sql می زنم و وظیقفه ها رو به sql می سپارم . قرار باشه همی داده ها بیاد تو برنامه کارایی نرم افزار وحشتناک میاد پایین خصوصا تو وب;)
 

A.S.Roma

عضو جدید
کاربر ممتاز
زمانی که بانک وظیفه چک کردن را به عهده داره از این طریق باید متوجه شید :gol:



مخالفم. مدیریت بانک اطلاعاتی و کلاً امکانات بانک برای این موارد هست و این مورد هم Exception حساب نمیشه چون شما میدونید چیه و استثنای ناخواسته نیست و روش select هم اصولی نیست و به نظر من سر بار حساب میشه :gol:

اگر اون exception رو از طریق try catch‌می خواهید Handle‌کنید ، 100% هزینه اش بیشتر از یک SELECT‌هست.
http://msdn.microsoft.com/en-us/library/ms229009.aspx


When you throw an exception, you’ve introduced a disruptive event into
the application. Control flow has been compromised. Expected actions did
not occur. Worse, you’ve left the cleanup operation to the programmer
writing the code that eventually catches the exception.
از کتاب Effective C#‌
و کلا" کافیه یه سرچ در مورد Exception‌و Performance تو گوگل بزنین.
 

A.S.Roma

عضو جدید
کاربر ممتاز
هرکی روش خودشه تو برنامه نویسی داره

اون که 100% !
دوست عزیز اینجا قرار نیست کسی کس دیگه رو محکوم کنه.

به شخصه فقط و فقط دوست دارم از اساتید و بزرگان چیزی یاد بگیرم و تجربه ی اندم رو تو نوشتن برنامه های Enterprise‌تحت وب به دوستان دیگه منتقل کنم.
 

N.NK

عضو جدید
سلام
من دارم یه برنامه جعبه لایتنر با#cمینویسم
یه جدول userدارم که دوتا ستون userوpassداره .
از دوتا تکس باکس ورودی ها وارد جدول میشن.
میخوام که چندین کاربر بتونن از برنامه استفاده کنن حالادو تا مشکل دارم

1)میخوام تو ستون user دوتا user مثل هم وارد نشه.
2)یکی دیگه اینکه برا اینکه این user فقط کلمات خودشو ببینه میخوام userرو از یک فرم به فرم دیگه ببرم.

ممنون میشم اگه کمکم کنید.

سلام نمیدونم با راهنمایی های دوستان به جواب رسیدین یا نه ولی منم راه حلم رو میگم ،برای سوال اول میتونید از HasRows استفاده کنید مثلا:
cn1.Open();

SqlDataReader dr = cmd1.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
MessageBox.Show("کد واردی شما تکراری است کد دیگری وارد کنید");


cn1.Close();}
else
{
cmd.CommandText = "INSERT INTO table (ID,nam)Values(@b,@c)";
cn.Open();
cmd.Parameters.AddWithValue("@b", textBox2.Text);
cmd.Parameters.AddWithValue("@c", textBox3.Text);
cmd.ExecuteNonQuery();}
برای سوال دوم اگه منظور چیزی مثل فرم پروفایل هست باید یوزرنیم رو موقع لاگین بریزید تو یه متغیر سراسری و هرجا خواستین ازش استفاده کنید
 

Similar threads

بالا