![]() |
![]() |
|
| کامپیـــــوتر ، فناوری اطلاعات |
|
یاعلی سلامتو پست قبلی در مورد LINQ صحبت کردیم اما گریز کوچکی هم به ADO.NET زدیم . اما امروز فقط می خوایم راجع به ADO.NET صحبت کنیم. میخوام یه Application بسازم که امکان وارد کردن نام کاربری و رمز ورود رو داشته باشه که بتونم با استفاده از این دو تا وارد محیط Application شم ... البته برنامه ی من فقط یک demo هست ... زمانیکه که کاربر نام کاربری و رمز ورود رو به درستی وارد می کنه و وارد سیستم میشه می تونه اطلاعات شخصی خودش رو اصلاح کنه و به روز رسانی کنه ... اگر کاربر از نوع کاربر معمولی نباشه به عبارتی از نوع admin باشه امکان تعریف کاربر جدید رو هم داره ... خب خیلی امکانات میشد گذاشت اما ما به همینا اکتفا می کنیم ... صبر کنید مراحل کار رو از همون ابتدا دنبال کنیم . شاید دوستانی باشن که وارد به این مباحث نباشن ... بعد از باز شدن برنامه ی ویژوال استودیو Solution Explorer که در سمت راست (به صورت پیش فرض) پنجره ی برنامه ویژوال استودیو قرار داره رو باز کنید. اگر پیداش نکردید نگران نباشید شما با رفتن به منوی زیر می تونید اون رو باز کنید. View>Solition Explorer یا حتی با فشردن همزمان کلید های میانبر Ctrl+Alt+L... من عکسش رو پایین گذاشتم ...
بعد از انتخاب گزینه ی New Item از منو یک پنجره باز می شود. در این پنجره که در عکس زیر نشان داده شده است، گزینه ی Data را از سمت چپ و سپس در پنجره گزینه ی Service-based DataBase رو انتخاب کنید و اسم اون رو myDB.mdf بگذارید و دکمه ی OK را بزنید.
حالا یک پنجره برای شما باز میشه که برای ایجاد DataSet هست ما در این مورد تو پست قبل مختصر صحبتی کردیم ... دکمه Finish یا OK رو بزنید. در پنجره ی Solution Explorer روی پایگاه داده ی خودتون دوبار کلیک کنید ، یه پنجره ی جدید که اسمش Server Explorer هست باز میشه . علامت جمع کنار اسم پایگاه دادتون رو تو این پنجره بزنید تا زیر مجموعه های اون هم باز شه . حالا روی شکل فولدر مانندی به اسم Tables کلیک راست کنید و گزینه ی Add New Table رو بزنید .
در این مرحله پنجره ای جلوی شما باز خواهد شد که می تونید موجودیت های پایگاه دادتون رو توی اون مشخص کنید. من از صفحه ی خودم عکس گرفتم .
مثل من جدول خودتون رو با این موجودیت ها ایجاد کنید ... فقط یه نکته رو فراموش نکنید که userID به عنوان کلید اصلی است و گزینه ی Identity Specification در Column Property رو من فعال کردم . مثل عکس زیر
این کار برای اینه که زمانی که یک سطر جدید به پایگاه دادمون اضافه میشه این فیلد به طور اتوماتیک افزایش پیدا کنه و ID مورد نظر رو به اون سطر اختصاص بده. گزینه ی Identity Increment مشخص می کند که در هر مرحله چقدر به مقدار قبلی اضافه شود ، در واقع گام افزایش فیلد را مشخص میکند. گزینه ی Identity Seed مقدار پایه را مشخص می کند. حالا دکمه ی Save رو از پایین نوار منو بزنید و اسم جدول تون رو userTBL بزارید ... خب جدول ما ایجاد شد ... حالا برای اینکه چند تا مقدار اولیه توی جدول باشه رو جدول کلیک راست می کنیم و Show Table Data رو میزنیم ... من کلمه ی کاربری رو به ترتیب admin , user1 و پسورد هر دو رو 123 انتخاب کردم ... admin از نوع admin و user1 رو از نوع کاربر معمولی که با کلمه ی user مشخص کردم ، مقدار دهی می کنم ... بقیه شم به دلخواه هر اطلاعاتی خواستید وارد کنید . ولی فراموش نکنید که باید به محدودیت ها توجه کنید ، مثلا در یک فیلد از نوع داده عددی کاراکتر وارد نکنید یا طول رشته یا عددی رو که وارد می کنید از مقداری که برای اون فیلد مشخص کردید تجاوز نکنه یا فیلد هایی که اجازه ندارند تهی باشند رو خالی بزارید و ... توجه کنید که در صورت پیشامد هر یک از اینا اجازه ذخیره سازی رو تا زمان اصلاح فیلد غیر مجاز ندارید . شما حتی می تونید محدودیت هایی رو هم خودتون اضافه کنید . مثل اینکه کلمه ی کاربری باید حداقل 3 و حداکثر 25 کاراکتر باشه ... برای این کار روی فیلد username کلیک راست کنید و گزینه ی Check Constraints رو بزنید .
در این وقت یک پنجره برای شما باز میشه دکمه ی Add رو بزنید و زمانیکه روی فیلد Expression هستید یک دکمه فعال میشود ، روی آن کلیک کنید و یک پنجره ی جدید به نام Check Constraint Expression باز میشه که داخل اون این متن رو بنویسید و دکمه ی Ok و سپس Close رو بزنید : (len([username])>(3) AND len([username])<(25))
از الان به بعد دیگه کاری با پایگاه داده نداریم. میریم سراغ فرم هامون ... این کارا چون کارای تقریبا آسونی هستن زیاد توضیح نمی دم ... روی فرم تون دو تا TextBox، دو تا Lable و دو تا Button از توی ToolBox بندازید . اسماشون رو هم خودتون انتخاب کنید . تو برنامه نویسی برای رویداد های دکمه ها متوجه میشید که من چه اسامی ای رو برای اونا انتخاب کردم . من کمی بیشتر هم دستکاری کردم تا ظاهرش یه ذره بهتر بشه ، در نهایت فرم من این شکلی شده :
روی دکمه ی Log In کلیک کنید و کدهای زیر رو در تابع رویداد کلیک این دکمه بنویسید.
private void LoginButton_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\myDB.mdf;Integrated Security=True;User Instance=True"); string q = "SELECT * FROM userTBL WHERE Username=\'" + UsernameTextBox.Text + "\' AND pass=\'" + PassTextBox.Text+"\'"; con.Open();//connnect to database first of all SqlCommand cmd = new SqlCommand(q,con); //make a sql command cmd.CommandType = CommandType.Text; SqlDataReader sdr=null;//initialize the DataReader by null try { sdr = cmd.ExecuteReader();//execute command and return the rows in result } catch (Exception ex) { MessageBox.Show(ex.Message); } if (sdr.HasRows)//check if there is such a user if yes { while (sdr.Read())//loop while there is any next row in results, here the answer is uniqe because the user name is uniqe { //get user information /*این تابع برای گرفتن اطلاعات کاربر است که در کلاس و فرم SettingForm میباشد و به صورت public static تعریف شده که به این صورت قابل دسترسی باشد*/ SettingForm.GetInfo(sdr.GetInt32(0),UsernameTextBox.Text, PassTextBox.Text, sdr.GetString(5),sdr.GetString(6), sdr.GetString(3), sdr.GetString(4), sdr.GetBoolean(7)); //clearing text boxes this.UsernameTextBox.Text =""; this.PassTextBox.Text = ""; //hide login form this.Hide(); //show setting form new SettingForm().Show(); // } } } else //if there is not such a user ... MessageBox.Show("This User doesn't Exist in DataBase!", "Not Found", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); sdr.Close(); con.Close(); } قبل از هر چیز باید به برنامه مون حالی کنیم که چطوری به پایگاه دادمون وصل شه برای این کار یک SqlConnection احتیاج دارید. برای اینکه به برنامه دستوری رو که میخواهید بدهید یک دستور خود را ابتدا به صورت یک رشته نوشته و سپس با استفاده از این دو عنصر بالا یک دستور یا SqlCommand می سازید... دستور ()con.Open دستور اتصال به پایگاه داده می باشد. SqlDataReader یک نوع داده می باشد که نتیجه مقدار بازگشتی اجرای دستور که به وسیله فرمان () cmd.ExecuteReader می باشد. کاربر با وارد کردن نام کاربری و رمز ورود و فشردن این دکمه با دوحالت روبرو می شود . اولین حالت مربوط به زمانی می شود که اطلاعات نادرست باشد و هیچ نتیجه ای در پی نخواهد داشت در نتیجه sdr.HasRows نادرست می باشد و داخل این بلوک اجرا نمی شود و برنامه به بلوک else منتقل می شود و کاربر با پیغام مناسبی مبنی بر یافت نشدن کاربری با این مشخصات روبرو می شود. اما زمانی که اطلاعات درست باشد . اطلات کاربر گرفته می شود و فرم دیگری که ما از قبل ایجاد کرده ایم باز می شود و اطلاعات کاربر در آن نمایش داده می شود که کاربر امکان ویرایش این اطلاعات را دارد.
همون طور که ظاهر این فرم رو می بینید بسازیدش ، اما اون دوتا Lable که بالا می بینید که رنگشون آبیه ، اسمشون LinkLable هست . شما می تونید به جای اونا دوباره از Button استفاده کنید.اما از ای فرمی که میبیند یکی دیگه هم به یه اسم دیگه درست کنید فقط به اون Lable های بالای این فرم دیگه احتیاجی نیست. خب دوستان من به حداکثر حجم داده برای ارسال یک پست رسیدم ولی توضیحاتم به نصف هم نرسید!... سورس کد برنامه رو به همراه فایل اجرایی میزارم تا اگه خواستید دانلود کنید ، اگه سوالی داشتید بپرسید ... منم در حد سوادم جواب میدم ... این یک نمونه برای محیط ویندوز بود ولی تو محیط وب وضعیت متفاوته ... این پست رو گذاشتم تا یه مدتی برم و سر نزنم ، اما اگر بعدا وقت و حالش رو داشتم درباره ی وب هم مختصری بحث می کنم ... موفق باشید ... از اینجا سورس کد برنامه رو دانلود کنید. برای اجرای برنامه از فایل اجرایی استفاده کنید از اینجا فایل اجرایی برنامه رو دانلود کنید. یا علی |
||
|
+ نوشته شده در
چهارشنبه نهم بهمن 1387ساعت 3:30 بعد از ظهر توسط محمـــد |
|
|
صفحه نخست پست الکترونیک آرشیو |
| درباره وبلاگ |
|
نوشته شده توسط دانشجویان فناوری اطلاعات و کامپیوتر دانشگاه پرند |
| این منــمـــــــا |
|
| ساعت به وقت تهران |
| نوشته های پیشین |
|
شهریور 1388 بهمن 1387 آبان 1387 مهر 1387 اسفند 1386 |
| آرشیو موضوعی |
|
عمـــــــــومی ┼┬─┴┬├ دانلــــــــودهــا کامپـیـــوتر(برنامه های کاربردی، ...) برنامه نویسی(Web & Wndows App ,Algorithms) معماري كامپيوتر و شبكه |
| نویسندگان |
|
محمـــد مجیـــــد |
| پیوندها |
|
وبلاگ یونیـــکورن داش علیــرضای خودمــون ترفنـــدهــای جـــــــــالب ACM دانشجویان دانشگاه پرند وبلاگ خودم - حرف دل اینا ;) |
|
RSS
|