ساخت یک فرم لاگین در سی شارپ
در یکی دیگر از سری مقالات برنامه نویسی سی شارپ در خدمت شما هستیم. در این مقاله قصد داریم نحوه ساخت یک فرم لاگین در سی شارپ و اس کیو ال سرور را آموزش دهیم. ممکن است بخواهید برنامه ای بنویسید که توسط افرادی که دارای نام کاربری و کلمه عبور هستند استفاده کنید. در این مقاله با نحوه نوشتن همچین برنامه ای به صورت پایه ای آشنا خواهید شد. این آموزش سعی شده که به نحو کاملا ساده یک جدول از کاربران در سمت دیتابیس ساخته شده و آن را به برنامه سی شارپ در ویژوال استودیو متصل کرده و کاربر با وارد کردن نام کاربری و کلمه عبور خود بتواند از برنامه استفاده کند.
در ابتدا لازم است که یک جدول همانند زیر در دیتابیس خود ایجاد کنید. در این مقاله فرض بر این است که با مفاهیم جدول و پایگاه داده در حد ابتدایی آشنایی دارید (برای اطلاعات بیشتر اینجا را بخوانید)
حال باید در سمت سی شارپ یک فرم طراحی کرده که از کاربر نام کاربری و کلمه عبور را دریافت نماید. در این فرم از دو تکست باکس و دو دکمه استفاده کردیم. کدهای ما در قسمت رویداد دکمه ها قرار میگیرد. قرار است با زدن دکمه Login در صورت درست بودن نامه کاربری و کلمه عبور برنامه پیام ورود موفقیت آمیز را نمایش دهد و در غیر این صورت پیام نام کاربری یا کلمه عبور اشتباه است را نشان دهد.
ابتدا در قسمت کد برنامه در بالا کتابخانه مربوط به ارتباط با دیتابیس را با دستور زیر وارد میکنیم.
Using system.Data Using system.Data.sqlclient
از تول باکس یک شئ sqlconnection و sqlcommand را به برنامه اضافه میکنیم. در propertie های sqlconnection تنظیمات لازم برای اتصال به دیتابیس مورد نظررا وارد میکنیم. از میان propertie های این شئ، connection string را انتخاب کرده و بر روی فلش جهت پایین کنار آن کلیک میکنیم و گزینه new connection را میزنیم. در پنجره باز شده در قسمت Select or enter database name لیستی از تمام دیتابیس های ساخته شده در سیستم ما وجود دارد و از میان آن ها ، دیتابیس مورد نظر خود را انتخاب میکنیم. با زدن دکمه Test Connection از صحیح بودن اتصال خود با دیتابیس مورد نظر اطمینان حاصل میکنیم و دکمه اکی را میزنیم. حال برنامه ما به پایگاه داده متصل شده است.
بر روی دکمه “ورود” دوبار کلیک کرده و وارد رویداد مربوط به آن میشویم.در ابتدا لازم است تا ارتباط ما باز شود. سپس با استفاده از sqlcommand یک کوئری به سمت سرور میزنیم تا ردیف منطبق با نام کاربری و کلمه عبور وارد شده را پیدا کنیم. سپس از کلاس Sqldatadapter یک شئ به نام sda (انتخاب نام سلیقه ای است) ساخته و نتیجه حاصل از sqlcommand را در آن میریزیم. حال ما نتیجه حاصل از کوئری را در برنامه خود وارد کرده ایم و باید آن ها را در یک جدول نگهداریم . برای اینکار از کلاس DataTable یک شئ ساخته و با متد Fill از شئ sda آن را پر میکنیم. حال چک میکنیم اگر تعداد سطرهای این جدول دقیقا برابر یک بود برای کاربر پیام خوش آمد گویی را نمایش دهد. بدیهی است که چنانچه این جدول دارای سطر کمتر از ۱ باشد یعنی چنین کاربری وجود نداشته است. تنها در صورتی مقدار سطرهای این جدول بیشتر از یک میشود که در دیتابیس کاربر تکراری و با رمز عبورهای یکسان وجود داشته باشد که برای جلوگیری از این امر فیلد username را از نوع PrimaryKey باید در نظر گرفت. در ادامه کدهای مربوط به رویداد دکمه ورود را مشاهده میکنید :
sqlConnection1.Open(); sqlCommand1.CommandText = "select username,pass_word from userstable where username='" + textBox1.Text + "'and pass_word='" + textBox2.Text + "'"; sqlCommand1.Connection = sqlConnection1; SqlDataAdapter sda = new SqlDataAdapter(sqlCommand1); DataTable dt = new DataTable(); sda.Fill(dt); if (dt.Rows.Count == 1) { MessageBox.Show("ورود موفقیت آمیز بود !"); } else { MessageBox.Show("نام کاربری یا کلمه عبور اشتباه است"); } sqlConnection1.Close();
مطالب زیر را حتما مطالعه کنید
روشن و خاموش کردن PC در کد سیشارپ
۷Zip با سی شارپ
متدها در سی شارپ
تبدیل متغیر ها در سی شارپ
مدیریت استثناء در سی شارپ
برنامه نویسی چند نخی در سی شارپ
3 Comments
Join the discussion and tell us your opinion.
دیدگاهتان را بنویسید لغو پاسخ
برای نوشتن دیدگاه باید وارد بشوید.
سلام من دارم یه برنامه باسی شارپ مینویسم .الان میخوام هرکی همون چیزی که خودش توی جدولها ثبت کرده ببینه .اما نمیدونم چطور این کار کنم میشه راهنماییم کنید؟
اگر برای هر جدول یک userid بزارم به نظرتون درست میشه ؟
سلام
خسته نباشید
(( تنها در صورتی مقدار سطرهای این برنامه بیشتر از یک میشود که در دیتابیس کاربر تکراری و با رمز عبورهای یکسان وجود داشته باشد که برای جلوگیری از این امر فیلد username را از نوع PrimaryKey باید در نظر گرفت))
میشه بیشتر توضیح بدین؟
سلام.
اگر دقت کنید به کدی که نوشته شده، میبینید که وقتی کوئری ما اجرا میشه تا چک کنیم که همچین کاربری در دیتابیس ما موجود هست یا نه، نتیجه این کوئری رو داخل یک جدول به نام dt ریختیم
نتیجه کوئری ما همیشه باید یک ردیف برگردونه، در غیر این صورت ینی کاربر تکراری تو جدول شما وجود داره. هیچ سیستم امنیتی وجود نداره که نام کاربری تکراری بپذیره از این جهت میگم که باید فیلد های
نام کاربری تون رو از نوع primarykey بگیرید که در صورت تکراری بودن نام کاربری بهتون اطلاع بده !
امیدوارم متوجه منظورم شده باشید،
هر سوالی داشتید با تیم ما در میان بزارید..