یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا...

75
Error www.kolbedanesh.com

Upload: others

Post on 13-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

Error

www.kolbedanesh.com

Page 2: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

برنامه نویسی آموزش گام به گام

بانک اطالعاتی با C#

(مرجع کامل)

تالیف

نژادورزی مهندس رمضان عباس

‌آوری‌نوین‌فن

www.kolbedanesh.com

Page 3: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

.

www.fanavarinovin.net

‌1111-8867778:‌تلفن‌‌‌‌‌‌‌‌‌‌‌‌‌‌38178-84337بابل،‌صندوق‌پستی‌ آوری‌نوین‌فن

‌(‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌مرجع‌کامل)‌#cگام‌برنامه‌نویسی‌بانک‌اطالعاتی‌با‌‌به‌آموزش‌گام‌نژادورزی‌عباس‌مهندس‌رمضان‌:‌فتألی‌آوری‌نوین‌فن:‌ناشر

‌1477پاییز‌:‌چاپ‌اول‌8111:جلد‌‌‌‌387-‌‌711-‌‌31314-‌‌8-7:‌شابک

‌تومان‌7611:قیمت‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌آوری‌نوین‌‌‌‌‌‌‌‌‌‌‌‌‌فن:‌آرایی‌حروفچینی‌و‌صفحه

‌77311881-77311133‌‌ :تلفکس‌‌‌‌‌‌‌‌‌‌‌138تهران،‌خ‌اردیبهشت،‌نبش‌وحید‌نظری،‌‌پالک‌

- ۸۴۳۱نژادورزی ، رمضان، عباس : سرشناسه

(/مرجع کامل)# Cنويسی بانک اطالعاتی با موزش گام به گام برنامهآ : عنوان و نام پديدآور

.نژادورزی تالیف رمضان عباس

.۸۴۱۱، آوری نوين نف: بابل : مشخصات نشر

.جدول مصور،: .ص۴۰۳ : مشخصات ظاهری

:6-2-91413-600-978 ريال ۰۰۰۰۰ : شابک

فیپا : وضعیت فهرست نويسی

(نويسی کامپیوتر زبان برنامه)شارپ سی : موضوع

مديريت --های اطالعاتی پايگاه : موضوع

۸۴۱۱ ۲ع ۵۰ س/ QA ۶۰/۶۴ : گرهرده بندی کن

۰۰۰/۸۴۴ : رده بندی ديويی

‎۸‎۵‎۰‎۱‎۰‎۸‎۳ : ملی شماره کتابشناسی

www.kolbedanesh.com

Page 4: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

فهرست مطالب

‌#C آشنايی با زبان: فصل اول

C#‌.......................................‌۱زبان‌.‌1-1

‌۱.....................................‌فضاي نام.‌8-1

‌ ‌۵...................................‌ها انواع داده.‌4-1 ‌۵.........................................‌متغيرها.‌3-1

‌۵......................‌نامگذاري متغيرها. 1-4-1

‌۵............................‌اعالن متغيرها. 2-4-1

‌۸۰...............‌مقدار دادن به متغيرها. 3-4-1

‌۸۰..........................................‌بتثوا.‌6-1

‌۸۸......................................عملگرها.‌7-1

‌۸۲....................................‌فرم برنامه.‌8-1

‌۸۲..............................خواص فرم. 1-7-1 ‌۸۴........................‌رويدادهاي فرم. 2-7-1

‌۸۰.............................‌متدهاي فرم. 3-7-1

‌16........................................‌ها كنترل.‌7-1‌label‌...............................17كنترل .8-1-1

TextBox .................. 17 كنترل. 2-8-1 Button ...................... 17كنترل . 3-8-1 ListBox‌.........................18كنترل . 4-8-1 ComboBox‌...................‌۸۱كنترل . 5-8-1

CheckBox ................. 11 كنترل. 6-8-1 CheckedListBox ....... 11 كنترل. 7-8-1 RadioButton ........... ۸۵ كنترل. 8-8-1 GroupBox .............. ۲۰ كنترل. 1-8-1

MenuStrip ............... 21كنترل . 11-8-1 ContextMenuStrip‌.....‌۲۰كنترل . 11-8-1 PictureBox ............. ۲۰كنترل. 12-8-1

‌۲۸.......................‌ساختارهاي كنترلي. 1-1

‌۲۸...................‌ساختارهاي تصميم. 1-1-1

24 ................... ساختارهاي تكرار .11-1

25 .................... كليد صفحهمديريت . 11-1

‌26 .................................. ها‌آرایه.‌18-1 ۴۰ ..................... ها‌و‌اشیاء‌کالس.‌14-1

۴۰ ....................... تعريف كالس. 1-13-1

۴3 .................. سازي كالس نمونه. 2-13-1

۴3 ...................... اعضاي كالس. 3-13-1

ط بانک اطالعاتيحم :فصل دوم

تيريسيسففففففتم مففففففد تعريففففففف. 1-2 ۳۰ ........................................... اطالعات بانك

63 ... داليل استفاده از بانك اطالعات. 1-1-2 6۶ ............. طراحي بانك اطالعاتي. 2-1-2 6۱ ................... ها سازي داده نرمال. 3-1-2 ‌SQL Server ........... ۳۱بانك اطالعات. 2-2

۳۵ ........... معرفي بانك اطالعاتي نمونه. 3-2

SQL اطالعفاتي ورود به بانك. 4-2

Server ........................................... ۰۲ SQL ........ ۰۲تايپ و اجراي دستورات . 5-2

اد بانک اطالعات و دوولجيا :فصل سوم

۰۰ .. طالعات‌و‌جداول‌آنایجاد‌بانک‌ا.‌1-4

55 ............ ايجاد بانك اطالعات. 1-1-3 تغييففر خففواص بانففك اطالعففات . 2-1-3

۰۶ .......................................... موجود 5۱ ........... حذف بانك اطالعات. 3-1-3

۰۵ .................. اشیای‌بانک‌اطالعات.‌8-4

SQL ..... 3۰ايجاد جدول با دستور . 1-2-3 تغييرسفففففففاختارجدول بفففففففا . 2-2-3

SQL ............................ 3۲دستور SQL ..... ۰۴حذف جدول با دستور . 3-2-3 بفففا اطالعفففاتي دسفففتيابي بفففه بانفففك. 4-3

ADO.NET .................................... ‌۰۳ System.Data ......... ۰۱فضاي نام . 1-3-3 ۶۰ ............. هاي داده كننده تأمين. 2-3-3 Connection ......... ۶۰هاي كالس. 3-3-3 IDbCommand .......... ۶۶واسط . 4-3-3

هاي پايه بانك اطالعات كالس: فصل چهارم

‌DataSet .......................... ۱۱كالس .‌1-3

www.kolbedanesh.com

Page 5: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

DataSet ...............۵۸پر كردن .1-1-4 ۵۸ ...........باچندين DataSetپركردن. 2-1-4 DataSet ............ ۵۲تثبيت تغييرات . 3-1-4 DataSet .....۵۲دسترسي به جداول . 4-1-4 DataTable ...................... ۵۲كالس .‌8-3

DataColumn ............۵5كالس . 1-2-4 ۸۰۰ ................................ كالس. 2-2-4‌DataGridView .............. ۸۰۲کنترل‌.‌4-3

ها ش دادهيرايورود و و: فصل پنجم

برای‌ورود،‌ویرایش‌و‌‌SQLدستورات.‌1-6 ۸۲۰ .................................. ها‌حذف‌داده

INSERT ............... ۸۲3دستور . 1-1-5 ۸۲۶ ..... ويرايش ركوردهاي جدولي. 2-1-5 ۸۲۱ ........ ردهاي جدولحذف ركو. 3-1-5 ۸۲۵ ............................ ها‌انقیاد‌داده.‌8-6

۸۴۰ ........... هاي ساده انقياد كنترل. 1-2-5 ۸۴۸ ......... هاي پيچيده انقياد كنترل. 2-2-54-6‌. 131‌ DataView ........ ۸۴۲سازي مرتب. 1-3-5 DataView ..... ۸۴6فيلتر ركوردهاي . 2-3-5 ۸۴5 ........ جستجوي ركورد خاص. 3-3-5 ۸۴۰ ... عاتيذخيره تصاوير در بانك اطال.‌3-6

بازيففففابي تصففففوير از بانففففك . 1-4-5 ۸۴۶ ............................. اطالعاتي

۸۴۶ ..... ها به فيلد تصاوير انقياد كنترل. 2-4-5

هـا بازيـابـي داده: فصل ششم

۸۰۰ ............................... وجو پرس. 1-6

SQL Server ............ ۸۰۰عملگرها در . 2-6

۸5۸ .......... عملگرهاي محاسباتي. 1-2-6 ۸5۸ ................ عملگر انتساب. 2-2-6 ۸5۸ ............... عملگرهاي بيتي. 3-2-6 ۸5۲ ............ اي عملگرهاي رابطه. 4-2-6 ۸5۲ ............. عملگرهاي منطقي. 5-2-6 ۸5۲ .............. عملگرهاي يكاني. 6-2-6 ۸5۴ ...... اي عملگرهاي اتصال رشته. 7-2-6 ۸5۴ ............... عملگرهاي ويژه. 8-2-6 ۸۰۳ ......... بازیابی‌اطالعات‌از‌جداول.‌4-7

۸۰۱ ........................... پیوند‌جداول.‌3-7

۸5۵ ................الحاق ضربدري. 1-4-6 ۸5۵ .................. حاق متعادلال. 2-4-6 ۸3۰ ................ الحاق نامتعادل. 3-4-6 ۸3۰ .................. الحاق دروني. 4-4-6

۸3۰ ................. الحاق بيروني. 5-4-6 ۸۰۸ ................... پرس‌و‌جوی‌فرعی.‌6-7

۸۰۳ ............... پرس‌و‌جوهای‌مرکب.‌7-7

‌DataAdapter .................. ۸۰۴كالس.‌8-7

SqlDataAdapter ... ۸36ايجاد شيء . 1-7-6 ۸33 ......... وجو بازيابي نتايج پرس. 2-7-6 بففففاDataTable كففففردن پففففر .3-7-6

DataAdapter ........................ ۸33 SqlDataAdapter ... ۸۰۰رويدادهاي . 4-7-6 ‌DataReader .................... ۸۰۶كالس.‌7-7

كففففففالس هففففففاي سففففففازنده. 1-8-6SqlDataReader ...................... ۸3۱

ExecuteNonQuery ....... ۸۰۵متد . 2-8-6 ExecuteScalar ................ 071متد . 3-8-6‌071 ................................ کاتالوگ.‌3-7

Server SQLاشـياي پيشـرفمه : فصل هفـمم ADO.NETو

‌۸۱۸ ....................................... دید.‌1-8 ۸۱۸ ..................... ايجاد ديد. 1-1-7 ۸۱۲ ..................... تغيير ديد. 2-1-7 ۸۱۲ .................... حدف ديد. 3-1-7 ۸۱۴ ................................... متغیرها.‌8-8

۸۱۳ .............................. توضیحات.‌4-8

۸۱۳ .................... ساختارهای‌تصمیم.‌3-8

IF … Else ............. ۸۱6دستور . 1-4-7 ۸۱5 ............ تو در تو IFدستور . 2-4-7 CASE ................. ۸۱3دستور . 3-4-7 ۸۱۰ .................. های‌ذخیره‌شده‌رویه.‌6-8

۸۱۶ ..... هاي ذخيره شده ايجاد رويه. 1-5-7 ۸۱۵ ........ اجراي رويه ذخيره شده. 2-5-7 ۸۱۵ ......... تغيير رويه ذخيره شده. 3-5-7 ۸۵۰ ..... هاي ذخيره شده حذف رويه. 4-5-7 ۸۵۰ ..................................... توابع.‌7-8

۸۵۸ ................... ايجاد توابع. 1-6-7 ۸۵۲ ..................... ر تابعتغيي. 2-6-7 ۸۵۲ .................... حذف تابع. 3-6-7 ۸۵۴ .........................ارسال پارامترها. 7-7

ها تـراكنـش: فصل هشمم

۲۰۸ .......................تراکنش‌چیست؟.‌1-7

۲۰۳ ...................... ارجاع‌به‌تراکنش.‌8-7

۲۰۰ ........ سازي تراكنش هاي پياده كالس.‌4-7

TransactionScope ..... ۲۰5كالس . 1-3-8 CommittableTransaction .. ۲۰3كالس. 2-3-8

www.kolbedanesh.com

Page 6: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

SqlTransaction ........... ۲۰۶الس ك. 3-3-8 ۲۰۵ ......... هاي جداسازي تراكنش سطح. 4-8

‌۲۰۵ ............................. نقاط ذخيره. 5-8

Reports با یريگزارشگ :فصل هنمCrystal

Crystal Report .. ۲۲۸افزار‌‌امکانات‌نرم.‌1-3

‌220 .............. مراحل‌طراحی‌گزارش.‌8-3 ۲۲۲ .............. ایجاد‌گزارش‌با‌ویزارد.‌4-3

۲۲۱ .................... های‌گزارش‌بخش.‌3-3

۲۴۰ ..... اضافه كردن فيلد متن به گزارش. 5-1 ۲۴۲ ........ اضافه‌کردن‌خط‌به‌گزارش.‌7-3

‌۲۴۲ ... اضافه‌کردن‌مستطیل‌به‌گزارش.‌8-3 اطالعفففاتي بانفففك فيلفففد اففففزودن. 8-1

۲۴۲ ....................................... گزارش به

‌۲۴۴ ............ افزودن تصوير در گزارش .3-3 ۲۴۴ ..... درگزارشفيلدهاي ويژه كردن ضافها.‌11-3

‌۲۴۳ ..... ضافه كردن فرمول به گزارشا.‌11-3 ۲۴۰ ....سازي ركوردهاي گزارش مرتب.‌18-3

نمففايش در گففروه كففردن اضففافه.‌14-3 ۲۴۶ ........................................ ركوردها

هففففففاي گزينففففففه انتخففففففاب. 1-13-1‌۲۴۱ .......................... بندي اطالعات گروه

اضفففافه كفففردن فيلفففدهاي مجمفففوع . 14-1 ۲۴۱ ..................................... در گزارش

۲۳۰ .... کردن‌نمودار‌به‌گزارش‌اضافه.‌16-3

‌Crystal Report Viewer .. ۲۳۴کنترل.‌17-3 نففففففففففام فضففففففففففاي .17-1

CrystalDecisions.Shared .................. ۲۳۴‌

اتصال به بانك اطالعات از طريق كد . 18-1 Crystal Reports .......................... ۲۳۳در

۲۳۰ ............ افزودن پارامتر به گزارش.‌13-3

نمفففففايش ركوردهفففففاي خفففففاص . 21-1 ۲۳۰ ....................................... از گزارش

اسفففففففففتفاده از خاصفففففففففيت .1-21-1RecordSelectionFormula فيلتفففر بفففراي

۲6۶ ....................................... ركوردها بفففه روش اتصفففال گفففزارش . 2-21-1

DataSet ....................................... ۲6۶ گريي و بازيابي پشميبان پشميبان: فصل دهم

از بانك اطالعات

BACKUPگيري بفا دسفتور پشتيبان. 1-11

DATABASE ................................. ۲۰۵‌ RESTOREDATABASE ..... ۲۰۸ردستو.‌8-11

۲3۶ ......... مديريت دايركتوري و فايل. 3-11 File ........................ ۲3۱ كالس. 1-3-11 Directory ................. ۲3۱كالس . 2-3-11 FileStream ............... ۲3۵كالس . 3-3-11 GzipStream .............. ۲۶۸كالس . 4-3-11 SQLDMO ................... ۲۶۴کنترل‌.‌3-11

SQLDMO ................ ۲۶6اشياي . 1-4-11 SQLDMO.SQLServer ... ۲۶5شيء . 2-4-11 SQLDMO.NameList ... ۲۶۶شيء . 3-4-11 SQLDMO.DataBase .... ۲۶۶شيء . 4-4-11 SQLDMO.Backup ...... ۲۶۶شيء . 5-4-11 SQLDMO.Restore ...... ۲۶۶شيء . 6-4-11

۴۰۲ ....................................: منابع

www.kolbedanesh.com

Page 7: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

مقدمه

برای‌جلووگیری‌از‌افزونيوی‌داده‌‌‌.‌شوند‌امروزه‌حجم‌زیادی‌از‌اطالعات‌ذخیره‌و‌بازیابی‌می

هوا‌از‌بانوک‌اطالعوات‌اسوتفاده‌‌‌‌‌‌نظمی‌و‌ایجاد‌سازگاری‌بین‌گزارش‌‌،‌بی(ها‌مورد‌داده‌تکرار‌بی)

پرکاربردترین‌و‌بهترین‌آنهوا،‌سیسوتم‌بانوک‌‌‌‌های‌اطالعات‌متعددی‌وجود‌دارند‌که‌‌بانک.‌شود‌می

اسوت‌کوه‌‌‌‌SQL Serverای،‌‌هوای‌اطالعوات‌رابطوه‌‌‌‌یکوی‌از‌بانوک‌‌.‌ای‌اسوت‌‌اطالعات‌رابطه

‌قابلیوت‌،‌شوبکه‌‌محویط‌هایی‌از‌قبیل‌کارایی‌باال،‌سهولت‌یادگیری‌و‌استفاده،‌کارکردن‌در‌‌ویژگی

بوه‌‌‌.کرده‌اسوت‌‌تبدیلعات‌جهان‌اطال‌بانکباال،‌آن‌را‌به‌عنوان‌پرکاربردترین‌‌امنیتو‌‌دسترسی

‌.کنند‌اطالعات‌استفاده‌می‌بانک‌ایناز‌‌دنیا‌کاربراندرصد‌‌81که‌‌طوری

هوای‌‌‌توان‌کارهایی‌از‌قبیل‌ایجواد‌فورم‌‌‌نمی‌SQL Serverاز‌طرف‌دیير،‌با‌بانک‌اطالعات‌

کارهوای‌‌‌به‌همین‌دلیل،‌برای‌انجام.‌ها‌و‌غیره‌را‌انجام‌داد‌اطالعات،‌تهیه‌گزارش‌ورود‌و‌ویرایش

هوای‌‌‌به‌عنووان‌یکوی‌از‌دروس‌رشوته‌‌‌‌#Cاز‌آنجایی‌که‌.‌نویسی‌نیاز‌داریم‌مذکور‌به‌زبان‌برنامه

نویسوی‌‌‌شود،‌این‌زبان‌را‌به‌عنوان‌زبوان‌برناموه‌‌‌های‌کشور‌تدریس‌می‌در‌دانشياه‌ITکامپیوتر‌و‌

‌.بانک‌اطالعات‌انتخاب‌نمودیم

برای‌کار‌با‌بانوک‌‌‌#Cهای‌‌داول،‌کالسدر‌این‌کتاب‌مطالبی‌از‌قبیل‌ایجاد‌بانک‌اطالعات،‌ج

های‌‌گیری‌و‌بازیابی‌فایل‌های‌ذخیره‌شده،‌پشتیبان‌اطالعات،‌ورود،‌ویرایش،‌حذف‌رکوردها،‌رویه

‌.گیری‌از‌بانک‌اطالعات‌بیان‌گردید‌ها‌و‌گزارش‌پشتیبان‌به‌صورت‌فشرده‌شده،‌تراکنش

تور‌از‌‌‌لیف‌کتب‌کوامپیوتر‌و‌مهوم‌‌ها‌تجربه‌در‌امر‌تدریس،‌تأ‌گیری‌از‌سال‌کتاب‌حاضر‌با‌بهره

های‌جالب‌و‌برجسته‌ایون‌‌‌از‌ویژگی.‌نویسی‌در‌زمینه‌بانک‌اطالعات‌تدوین‌شده‌است‌همه‌برنامه

هوای‌بیوان‌شوده،‌‌‌‌‌های‌متنوع‌کاربردی،‌حل‌گام‌به‌گام‌آنها‌و‌توضیح‌کامل‌مثوال‌‌کتاب،‌بیان‌مثال

‌.باشد‌می

و‌دانشوجویان‌عزیوز‌‌‌‌،‌اسواتید‌رماتیک‌کشورتوجه‌جامعه‌انفو‌‌مورددر‌پایان‌امیدوارم‌این‌اثر‌

‌.قرار‌گیرد

توانید‌به‌صورت‌رایيوان‌از‌سوایت‌انتشوارات‌‌‌‌‌های‌است‌که‌کد‌آنها‌را‌می‌کتاب‌حاوی‌برنامه

‌‌‌ .بيیرید‌‌www.fanavarinovin.netآوری‌نوین‌به‌آدرس‌‌‌فن‌رزيونژاد‌عباس

[email protected]

www.kolbedanesh.com

Page 8: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

فصل

1 #Cان آشنایی با زببخشی از فصل

افزارهفاي نفرم يكفي از پركفاربردترين . كننفد استفاده مفي يها از بانك اطالعات ها براي نگهداري داده سازمان

توانفد نيازهفاي از طرف ديگر، بانك اطالعات به تنهفايي نمفي . است SQL Serverهاي اطالعات، بانكمديريت سازي بايد بتوان به بانك اطالعات متصل شده هاي برنامه به همين دليل با يكي از زبان. ها را برطرف كند سازمان

سازي وجفود دارنفد كفه از طريفق آنهفا امروزه صدها زبان برنامه. هاي آن را ويرايش، حذف و اضافه نمود دادهتفرين و پركفاربردترين يكفي از مهفم . هاي آن را دستكاري نمفود توان به بانك اطالعات متصل گرديد و داده مي

.آموزيم را مي #Cبه همين دليل در اين فصل به طور خالصه زبان . باشد مي #Cسازي، رنامههاي ب زبان

#Cزبان . 1-1

و مفهفوم 1از فنفاوري شفيء #Cزبفان . افزار ويفژوال اسفتوديونت ارا فه شفده اسفت اين زبان به همراه نرممثفل مفردم، . شفود ميفده مفي نا شویء‌هر چيزي كفه در دنيفاي وايعفي وجفود دارد، . كند استفاده مي 2گرايي شي

ماننفد انفدازه، رنفو، وزن و یصوفات‌هر شيء از . ها، كامپيوترها و غيره ها، گياهان، اتومبيل ها، كارخانه ساختماندهنفد، د و رفتارهايي از خودشان نشفان مفي نكن تشكيل شده است كه شكل ظاهري آن را تعيين مي ديگر صفات

.نمايد و غيره كند، ترمز مي خندد، اتومبيل حركت مي يكند، م خوابد، گريه مي مانند انسان مينمايد، امكاناتي در اين زبان اضفافه شفده اسفت كفه گرايي استفاده مي از فناوري شي #Cاز آنجايي كه زبان

3کالسسازي كند از مفهوم گرايي را پياده شي #Cبراي اين كه . سازي كنيد توانيد اشياي دنياي وايعي را مدل مي

هفا و متفدهايي اسفت كفه هر كالس شفامل داده . رود ، براي ايجاد انواع جديد به كار ميکالس. كند ه مياستفادبفا مفهفوم كفالس و چگفونگي . نماينفد هايي را براي مشتريان فراهم مفي كنند و سرويس ها را دستكاري مي داده .سازي آنها در ادامه بيشتر آشنا خواهيم شد پياده

فضای نام. 2-1

ها بفه دو كالس. كند استفاده مي نويسي براي برنامه از كالس #Cنويسي كه بيان گرديد، زبان برنامه طور همان :شوند كه عبارتند از دسته تقسيم مي

ويفژوال اسفتوديونت وجفود FCLانفد و در كتابخانفه ها از يبل نوشته شده اين كالس: آماده‌های‌کالس.‌1

.دارند

. نويسان از يبل وجود ندارنفد هاي مورد نياز برنامه همه كالس :نویسد‌نویس‌می‌هایی‌که‌برنامه‌کالس.‌8

.ها آشنا خواهيد شد در ادامه با اين كالس. دها را بنويس برخي از كالس ،نويس نياز دارد بنابراين برنامه

1- Object 2- Object Oriented 3- Class

www.kolbedanesh.com

Page 9: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

ها مبرخي از فضاي نا. گيرند مختلف يرار مي 4فضاهای‌ناموجود دارند، در FCLهايي كه در كتابخانه كالسعفالوه . شوند اضافه مي #Cاين فضاهاي نام به طور خودكار به برنامه . است آمده 1-1و وظايف آنها در جدول

براي ايفن منوفور . توانيد آنها را به برنامه اضافه كنيد بر اين فضاهاي نام، فضاهاي نام ديگري وجود دارند كه مي :ال، دستورات زير را ببينيدبه عنوان مث. استفاده نماييد usingبايد از دستور

using System.Data.SqlClient;

using System.Convert;

بفراي كه هايي كند تا بتوانيد از كالس را به برنامه اضافه مي System.Data.SqlClientدستور اول، فضاي نام اين فضاي نام در ادامه بيشتر با )بهره بگيريد روند، به كارمي Server SQLاتصال و دستكاري به بانك اطالعات

كند تا بتوانيد از متدهايي كفه مي اضافهرا به برنامه System.Convertو دستور دوم، فضاي نام ( آشنا خواهيد شد .روند، استفاده نماييد هاي مختلف به كار مي براي تبديل انواع داده

‌.FCLبرخی‌از‌فضاهای‌نام‌موجود‌در‌‌‌‌‌‌1-1جدول‌هدف‌فضای‌نام

System هاي پايه و انواع داده از يبيل حاوي كالسdouble ،int ، charو غيره است.

System.Data شوند هاي بانك اطالعات استفاده مي هايي است كه براي دستيابي به داده داراي كالس.

System.Io هفا بفه ها مانند فايل خروجي داده -هايي تشكيل شده است كه براي ورودي از كالس

.روند ميكار

System.Drawing رود هايي تشكيل شده است كه براي ترسيم اشكال گرافيكي به كار مي از كالس.

System.Linq هايي تشكيل شده است كه براي كار با از كالسLINQ روند به كار مي.

ها انواع داده. 3-1

تفرين بخفش هفا مهفم داده ،يعني. دارند ها، پردازش و استخراج نتايج سر و كار ها با دريافت داده اكثر برنامهدو نوع . نويسي وجود دارند، را بياموزيم هايي كه در زبان برنامه لذا، بايد انواع داده. نمايند نويسي را ايفا مي برنامه

:تعريف نمود كه عبارتند از #Cتوان در زبان داده را مي هاي مرجع داده. 2هاي مقدار داده. 1

و Objectهفاي بجفز داده )شفوند هايي هستند كه توسط انواع اوليه تعريفف مفي ان داده، همهای‌مقدار‌دادهString .) نويس تعريفف ، تمام انواعي هستند كه توسط برنامههای‌مرجع‌دادهاند و آمده 1-2اين انواع در جدول

.آموزيم مي كالسسازي در ادامه پياده. اند ه هاي هستند كه از يبل تعريف شد شوند يا كالس مي

4- Namespaces

www.kolbedanesh.com

Page 10: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

‌.#Cای‌اولیه‌در‌ه‌انواع‌داده‌‌‌1-8جدول‌.کند‌نيهداری‌می‌اندازه‌NET.معادل‌#Cزبان‌در‌نوع‌

byte Byte 1 (255تا 1)مقادير بدون عالمت

char Char 1 كاركترهاي يونيكد

bool Boolean 1 مقاديرTrue ياFalse

sbyte Sbyte 1 (127تا -128)دار مقادير عالمت

short Int16 2 32767تا -32768مقادير صحيح از

Ushort Uint16 2 65535تا 1مقادير صحيح بدون عالمت از

int Int32 4 مقادير صحيح بين 312)تا 312 1)

uint Uint32 4 322تا 1مقادير صحيح بدون عالمت

float Single 4 اعداد اعشاري/ 451 5 /تا 10 383 4 ريم اعشار 7با 10

double Double 8 /اعداد اعشاري 3245 0 /تا10 3081 7 از ريفم بعفد 16تفا 15با10

اعشار

decimal Decimal 8 مري 28نقطه اعشار ثابت تا

Long Int64 8 مقادير صحيح 632)تا 632 1)

ulong Uint64 8 تا 1مقادير(642 1)

متغیرها. 4-1

:باشند هاي زير مي متغيرها نامي براي كلمات حافوه هستند كه داراي ويژگي .ندشو ها در آنها ذخيره مي داده

.مقدار آنها در طول اجراي برنامه ممكن است تغيير كند

.در يك لحوه خاص فقط يك مقدار را دارند

.آنها را تعيين كرد، نوع و مقدار براي استفاده از متغيرها بايد نام

نامگذاری متغیرها. 1-4-1

به طوري كه . استفاده كرد( ف)توان از تركيبي از حروف، اريام و خط ربط مي #Cبراي نامگذاري متغيرها در د، ولفي نهفايي بفراي متغيرهفا باشف ند نامنتوا مي sum ،count1 ،i_1به عنوان مثال، . اولين كاركتر آنها ريم نباشد

1count وhioh!book شروع شد و در دومين نام كفاركتر 1زيرا، اولين نام با ريم . توانند نام متغيرها باشند نمي ! .باشند رهاي مجاز نمياستفاده گرديد كه كاركت

اعالن متغیرها. 2-4-1

يعني، بايد تعيين كنيد متغير چه نوع . بعد از اين كه متغيرها را نامگذاري كرديد بايد نوع آنها را تعيين نماييد :گردند متغيرها به صورت زير اعالن مي. كند اي را ذخيره مي داده

www.kolbedanesh.com

Page 11: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

‌ینام‌متغیر‌‌‌‌‌‌‌‌‌نوع‌داده‌‌‌‌‌‌‌‌سطح‌دستیاب‌;

تفرين مهفم و متغيرها دستيابي داشته باشيدبه توانيد ميهاي كه در چه محدوده كند سطح دستيابي، تعيين ميد و يشود تا متغير را بتوانيد در كل كالس دسفتيابي داشفته باشف موجب مي public. هستند privateو publicآنها

private اگفر سفطح دسفتيابي ذكفر نشفود، . ابي داشته باشيدشود متغير را بتوانيد در همان بالك دستي موجب ميprivate در ادامه بيشتر با سطوح دستيابي آشنا خواهيد شد. در نور گرفته خواهد شد.

:اكنون دستورات زير را ببينيد

int x;

double d;

string s1, s2;

و دستور سفوم، doubleنوع را از dدستور دوم، متغير .كند را از نوع صحيح تعريف مي xدستور اول، متغير .نمايد اي تعريف مي را از نوع رشته s2و s1متغيرهاي

مقدار دادن به متغیرها. 3-4-1

:هاي متعددي وجود دارد كه عبارتند از براي مقداردهي به متغيرها روش )=(پس از تعريف نوع متغير و با دستور انتساب . 2 مقداردهي در زمان اعالن متغير. 1 دستورات ورودي. 3

:به عنوان مثال، دستورات زيرا را ببينيد

int x = 5 , y = 10;

string s = “good”;

را sاي كند و دستور دوم، متغير رشته تعريف مي intاز نوع 10و 5را با مقادير yو xدستور اول، متغيرهاي :اكنون دستورات زير را ببينيد. دهد مي را به آن تخصيص ”good“نمايد و رشته تعريف مي stringاز نوع

int x; string s;

x = 10;

s = “C#.NET”;

دستور سفوم، مقفدار .كنند تعريف مي stringو intاز نوع به ترتيب را sو xاول و دوم متغيرهاي اتدستور .كند ن ميتعيي C#.NETرا رشته sدهد و دستور چهارم، مقدار متغير يرار مي 11را برابر xمتغير

.در ادامه با چگونگي مقداردهي متغيرها با دستورات ورودي آشنا خواهيد شد

ثوابت. 5-1

constبراي تعريف ثوابفت از واهه . ت، مقاديري هستند كه در برنامه وجود دارند ولي يابل تغيير نيستندبثوا :شود به صورت زير استفاده مي

‌‌‌constنام‌‌‌‌‌‌‌نوع‌داده‌‌‌‌‌=‌‌مقدار‌ثابت‌‌; :به عنوان مثال، دستورات زير را ببينيد

const float PI = 3.14;

const char ch = ‘+’;

www.kolbedanesh.com

Page 12: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

را از نفوع chكنفد و دسفتور دوم، ثابفت از نوع اعشاري معرففي مفي 3.14را با مقدار PIدستور اول، ثابت .نمايد تعريف مي ’+‘كاركتري با مقدار

عملگرها. 6-1

عملگري است كه دو ‘-‘به عنوان مثال، نماد . دهند تند كه اعمال خاصي را انجام ميعملگرها، نمادهايي هس :اند شوند كه در زير آمده به انواع مختلف تقسيم مي #Cعملگرها در .كند مقدار را از يكديگر تفريق مي

. دهنفد عملگرهايي هستند كه عمل محاسبات را بر روي عملوند انجفام مفي ،عمليرهای‌محاسباتی‌

.اند آمده 1-3اين عملگرها در جدول

را 1-4جفدول )كننفد را با يكديگر مقايسه ميعملگرهايي هستند كه دو عملوند ای،‌رابطه‌هایعملير‌

(.ببينيد

كننفد عمفل مفي ( Falseيا True)عملگرهايي هستند كه بر روي عبارت منطقي عمليرهای‌منطقی،‌

(.را مشاهده كنيد 1-5جدول )

(.1-6جدول)شوند ايجاد مي= از تركيب عملگرهاي محاسباتي و عالمت ،کیبیعمليرهای‌تر‌

عملگرهايي هستند كه براي تست كردن، مقدار دادن يا شيفت دادن و ساير اعمفال ،عمليرهای‌بیتی‌

.اند آمده 1-7عملگرهاي بيتي در جدول . روند بر روي عملوندها به كار مي

‌.عمليرهای‌محاسباتی‌‌‌‌‌‌1-4جدول‌

‌نتیجه‌مثال‌‌x‌yنام‌عملير y-x 12 10 تفريق و منهاي يكاني-

-y 2

-12 x +y 22 5 17 جمع + x*y 20 2 10 ضرب * x/y 2 5 10 تقسيم /

x%y 1 3 10 باييمانده تقسيم صحيح % x , y-- 9 , 4-- 5 10 كاهش-- x++ , ++y 11 , 6 5 10 افزايش ++

‌.ای‌عمليرهای‌رابطه‌‌‌‌‌‌1-3جدول‌‌نتیجه‌مثال‌‌x‌yنام‌عملير

x > y False 12 10 بزرگتر < x > = y True 7 10 بزرگتر يا مساوي => x < y True 7 10 كوچكتر >

x <= y False 12 10 كوچكتر يا مساوي => x = = y False 17 10 تساوي = = x != y True 17 10 نامساوي =!

www.kolbedanesh.com

Page 13: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

‌.عمليرهای‌منطقی‌‌‌‌‌‌1-6جدول‌‌نتیجه‌مثال‌‌x‌yنام‌مليرع

10 12 ! x False (not)نقيض !

10 12 x < 12 && y > 10 True (and)و && 12 8 x > 12 || y < 6 False (or)يا ||

‌.عمليرهای‌ترکیبی‌‌‌‌‌‌1-7جدول‌‌نتیجه‌معادل‌مثال‌‌X‌yنام‌عملير

x += y x = x + y x = 22 12 10 انتساب جمع = + x -= y x = x - y x = 2 8 10 تفريقانتساب = - x *= y x = x * y x = 120 12 10 انتساب ضرب = * x /= y x = x / y x = 5 2 10 انتساب تقسيم = /

x %= y x = x % y x = 2 4 10 ساب باييمانده تقسيمتان = %

‌.عمليرهای‌بیتی‌‌‌‌‌‌1-8جدول‌‌نتیجه‌مثال‌‌x‌yنام‌عملير

x & y 2 2 10 و & x | y 11 3 10 يا | x ^ y 9 3 10 يا انحصاري ^ x 1 ~ 3 126 نقيض ~

x >> y 56 3 7 شيفت به راست << x << y 25 2 100 شيفت به چپ >>

فرم برنامه. 7-1

حفدايل #Cهر برنامه بانك اطالعفات در . گيرند هاي برنامه در آن يرار مي فرم برنامه، مكاني است كه كنترللفذا در ادامفه بفه ايفن . فرم بايفد خفواص، رويفدادها و متفدهاي آن را بشناسفيم از براي استفاده. ديك فرم دار

.پردازيم موضوعات مي

خواص فرم. 1-7-1

از حوصله همه اين خواص بيان .فرم خواص متعددي دارد. ندنك خواص فرم، شكل ظاهري فرم را تعيين ميبرخي از خواص مهم فرم . پردازيم ميهاي ديگر فرم و كنترللذا، به تشريح خواص مهم . اين كتاب خارج است

را بزنيفد تفا F4كليفد و سفپس كليفك كنيفد آن بر روي ،فرم براي نمايش خواص. آمده است 1-8در جدول (:زيرشكل )خواص فرم را ببينيد

www.kolbedanesh.com

Page 14: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

‌.خواص‌مهم‌فرم‌‌‌‌‌1-7جدول‌‌هدف‌خاصیت

Name ن فرم، نام فرم براي اولي. كند فرم را تعيين مي نامForm1 توانيد آن را تغيير دهيد است كه مي.

ActiveForm كند فرم فعال فعلي را تعيين مي.

Enabled دهد پاسخ نمي رويدادي هيچ اگر فرم غيرفعال گردد، به. كند آيا فرم فعال است يا خير مي تعيين.

Font كند فونت فرم را تعيين مي.

ForeColor كند فرم را تعيين مي يرو هاي نوشته رنو.

Language كند زبان مورد استفاده در فرم را تعيين مي.

MinimizeBox كند آيا دكمه كمينه در عنوان فرم ظاهر شود يا خير تعيين مي.

RightToLeft (.فارسي مفيد است زبان براي اين خاصيت )كند مي را تعيين اطالعات نمايش جهت

Size كند ين مياندازه فرم را تعي.

Text كند كه بايد در عنوان فرم نمايش داده شود متني را تعيين مي.

Location كند محل يرار گرفتن فرم را تعيين مي.

رویدادهای فرم. 2-7-1

كفه توسفط كفاربر انتخفاب هاي ويژوال منتور رخ دادن رويدادهايي هستند طور كه بيان كرديم، برنامه همانآن انتخفاب به رويدادي نوشته شده باشفد، در صفورت گو يعني، اگر برنامه پاسخ. پاسخ دهندتا به آنها شوند مي

تفرين آنهفا در برخي از مهفم . فرم داراي رويدادهاي مختلفي است. شود ، اين برنامه اجرا ميتوسط كاربر رويداد .ندا آمده 1-1جدول

View/ Propertiesاكنون گزينه . تخاب شودآن كليك كنيد تا فرم ان بر روي براي مشاهده رويدادهاي فرم،Window تا پنجره نماييد اجراراProperties در اين پنجره دكمه . ظاهر شودEvents را كليك كنيد تا ليست

(:زيرشكل )رويدادهاي فرم را ببينيد

www.kolbedanesh.com

Page 15: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

‌.رویدادهای‌مهم‌فرم‌‌‌‌‌1-3جدول‌‌هدف‌رویداد

Activated دهد خ ميشود، ر ويتي كه فرم فعال مي. Click دهد كه فرم كليك گردد ويتي رخ مي. FormClosed دهد كه فرم بسته شود ويتي رخ مي.

FormClosing ايفن رويفداد يبفل از رويفداد . دهد كفه ففرم در حفال بسفته شفدن باشفد ويتي رخ مي

FormClosed دهد رخ مي . Deactivate دهد كه فرم غيرفعال گردد ويتي رخ مي. DoubleClick دهد ويتي كه فرم كليك مضاعف شود، رخ مي. Enter دهد شود، رخ مي نما وارد فرم مي ويتي مكان. KeyDown دهد رود، رخ مي ويتي كليدي فشرده شده پايين مي.

KeyPress ايففن رويففداد يبففل از رويففداد . دهففد شففود، رخ مففي ويتففي كليففدي فشففرده مففي

KeyDown افتد اتفاق مي. KeyUP دهد گردد، رخ مي د فشرده شده رها ميويتي كلي. Leave دهد كند رخ مي نما فرم را ترك مي ويتي مكان. Load (.يبل از نمايش فرم)دهد شود، رخ مي ويتي فرمي باز مي MouseDown دهد ويتي كه كليد ماوس فشرده شود، رخ مي. MouseEnter دهد نماي ماوس وارد فرم شود، رخ مي ويتي مكان. MouseLeave دهد كند، رخ مي نماي ماوس فرم را ترك مي ويتي مكان. MouseUP دهد شود، رخ مي ويتي كليد فشرده شده ماوس رها مي. Move دهد كند، رخ مي ويتي فرم شروع به حركت مي. Resize دهد يابد، رخ مي ويتي اندازه فرم تغيير مي. TextChanged يا خاصيت ( لكنتر)دهد كه متن فرم ويتي رخ ميText تغيير كند. Shown دهد ويتي كه فرم نمايش داده شود، رخ مي. SizeChanged دهد كه مقدار خاصيت ويتي رخ ميSize يابد تغيير مي. MouseMove كند دهد كه ماوس روي فرم حركت مي ويتي رخ مي.

www.kolbedanesh.com

Page 16: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

متدهای فرم. 3-7-1

.اند آمده 1-11برخي از متدهاي مهم فرم در جدول . ددهن متدها، كارهاي خاصي را بر روي فرم انجام مي

‌.متدهای‌مهم‌فرم‌‌‌‌‌1-11جدول‌‌هدف‌متد

Active كند فرم را فعال مي.

Close بندد فرم را مي.

Dispose برد فرم را حذف كرده از بين مي.

Focus كند نما را به فرم مورد نور منتقل مي مكان.

Hide كند فرم را پنهان مي.

ResetText كند متن عنوان فرم را پاك مي.

Show كند فرم مخفي شده را آشكار مي.

Refresh كند فرم را بازسازي كرده، اطالعات آن را دوباره رسم مي.

ToString نمايد محتويات فرم را به رشته تبديل مي.

Validate شود موجب اعتبارسنجي فرم مي.

ها کنترل. 8-1

هفا اين كنتفرل ) هايي را بر روي فرم يرار دهيد بايد كنترل #Cها در انيد براي نوشتن برنامهد طور كه مي همانگو به رويدادهاي آنها را خواص آنها را مقداردهي كرده، برنامه پاسخ. (همان يطعات تشكيل دهنده برنامه هستند

. وجود دارنفد #Cهاي زيادي در كنترل. دهند را تشكيل مي #Cهاي ها اجزا اصلي برنامه بنابراين، كنترل. بنويسيد 5.كنيم هاي مهم را بررسي مي لذا، در اين كتاب برخي از كنترل. گنجد بحث در مورد همه اينها در اين كتاب نمي

را ( ) Toolboxبراي اضافه كردن كنترل جديد بر روي فرم، دكمفه . اين كنترل را در ادامه خواهيد ديددر اين جعبه ابفزار، (. 1-1شكل)شود اكنون جعبه ابزار ظاهر مي. ماده را مشاهده كنيدهاي آ كليك كنيد تا كنترل

بفا )كنترل مورد نور را كليك مضاعف كنيد تا به فرم اضافه گردد و آن را به مكان دلخواه از ففرم انتقفال دهيفد (:شكل زير)قال دادم را به فرم اضافه كردم و به مكان دلخواه انت button1من دكمه (. كشيدن و رها كردن

اد نژ اهلل جعفرنژادقمي و رمضان عباس از انتشارات علوم رايانه، تألیف عین #Cبه آموزش گام به گام #Cبراي كسب اطالعات بیشتر در مورد -۸

.مراجعه كنید

www.kolbedanesh.com

Page 17: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

. براي حذف كنترلي از فرم، آن را كليك كفرده تفا انتخفاب شفود .را فشار دهيد تا كنترل از روي فرم حذف گردد Deleteاكنون دكمه

() Labelکنترل . 1-8-1

هاي غيريابل ويرايش از يبيفل عنفوان اين كنترل براي نمايش متناين كنترل نيز داراي خواص و . رود هاي مورد نياز به كار مي فيلد، پيام

:ترين آنها در زير آمده است رويدادهاي زيادي است كه برخي از مهم

كند آيا اندازه كنترل با توجه بفه تعيين مي :AutoSizeخاصیت‌

. به طور خودكار تغيير كند يا خير Textمقدار خاصيت

Labelمكان يرار گرفتن متن در كنتفرل :‌‌TextAlignخاصیت‌

.به عنوان مثال، دستور زير را ببينيد. كند ا تعيين مير

label1.TextAlign = ContextAlignMent.TopLeft;

.دهد اين دستور، متن را در باال سمت چپ نمايش مي

دهفد كفه مقفدار ويتفي رخ مفي :‌AutoSizeChangedرویداد

.تغيير كند AutoSizeخاصيت

مقفدار دهفد كفه ميويتي رخ :‌‌‌‌TextAlignChangedرویداد‌

.تغيير يابد TextAlignخاصيت

() TextBoxکنترل . 2-8-1

عفددي ،اي اين كنترل براي دريافت اطالعاتي از يبيل مقادير رشتهاين كنترل . رود فيلدها به كار مي( طوالنياي اطالعات رشته) Memoو

هاي ديگر داراي خواص، رويدادها و متدهاي متعددي نيز مانند كنترلبرخي از خواص، رويدادها و متفدهاي ايفن كنتفرل در جفدول . ستا

.اند آمده 11-1

() Buttonکنترل . 3-8-1

اجرا خواهفد ( دستورات خاصي)زيرا با كليك آن فرمان خاصي . دكمه فرمان معروف هستند به ها اين كنترلمفه بيشفتر بفا ايفن كنتفرل آشفنا در ادا. هاي ديگر است خواص، رويدادها و متدهاي اين كنترل مانند كنترل. شد

.خواهيد شد

يژوال استوديونتپنجره ابزار و 1-1شكل

www.kolbedanesh.com

Page 18: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

فصـل

2 SQLبخشی از مبانی بانک اطالعات

Server ‌

به عنفوان مثفال، . ها سر و كار دارند ها با حجم عويمي از داده ها، مؤسسات، ادارات و شركت امروزه سازمانبه طوري . ها را نگهداري كنيد تانفرض كنيد بخواهيد اطالعات مربوط به مكالمات شركت مخابرات يكي از اس

نگهداري، پردازش و بازيابي اين حجم اطالعفات . گردد آوري مي ميليارد ركورد جمع 15كه در يك سال حدود ، ايجفاد (هفا افزونگفي داده )هفا مفورد داده براي جلوگيري از تكرار بفي . بر است هاي معمولي زمان از طريق فايل

ويي در ميزان حافوه، به كارگيري بانك اطالعات به صفورت يفك ضفرورت ج ها و صرفه سازگاري بين گزارشتوان اطالعات مربوط به مكالمات تلفن ثابت يك استان يعني، بدون استفاده از بانك اطالعات نمي. درآمده است

هفا را در ها سفر و كفار دارنفد، داده هاي كاربردي كه با داده از طرف ديگر، اكثر برنامه. را نگهداري و ذخيره كرد .كنند نمايند و از طريق بانك اطالعات آن را پردازش مي بانك اطالعات ذخيره مي

و Access ،SQL Server ،Oracle ،DB2تفوان هاي اطالعات متعددي وجفود دارنفد كفه از جملفه مفي بانكMy SQL ها، بانك اطالعات در بين اين بانك. هاي اطالعات كاربرد خاصي دارند هر يك از اين بانك. را نام برد

SQL Server درصد از كاربران دنيا از اين بانك اطالعفات 71زيرا، حدود . از محبوبيت خاصي برخوردار استبه همين خاطر، در اين فصل ابتدا با مفاهيم بانك اطالعات، داليل استفاده از آن آشفنا خفواهيم . كنند استفاده مي

زنيم و در ادامه كتاب، اين بانك اطالعات را ايجاد كرده، اعمال ميسپس، يك بانك اطالعات نمونه را مثال . شد .دهيم مختلف را بر روي آن انجام مي

بانک اطالعاتمدیریت تعریف سیستم . 1-2

يعني، بانك اطالعفات مخزنفي بفراي . است 6، مكانيزيم نگهداري ركوردهابانک‌اطالعات مديريت سيستم

:توانند اعمالي از يبيل ن آن ميها است كه كاربرا نگهداري از داده

افزودن جداول خالي به بانك اطالعات.1

افزودن ركوردهايي به جداول بانك اطالعات.8

تغيير ساختار جداول .4

حذف ركوردهاي بانك اطالعات .3

هاي بانك اطالعات تغيير داده .6

بر روي جداول 7وجو اجراي پرس.7

6- Records 2- Query

www.kolbedanesh.com

Page 19: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

تمي كامپيوتري است كه هدف آن ذخيره و بازيفابي بانك اطالعات، سيسمديريت تر، سيستم به عبارت ساده .نمايد تبديل كرده، آنها را بازيابي مي بانك اطالعات داده را پردازش نموده به اطالعات. باشد ها مي داده

دالیل استفاده از بانک اطالعات. 1-1-2

اردي از يبيفل انفدازه شايد از خودتان بپرسيد، بانك اطالعات چه مزايايي دارد؟ پاسخ به اين سفوال بفه مفو تر شفود و تعفداد كفاربران بيشفتر هرچه اندازه سيستم بزرگ. سيستم، تعداد كاربران سيستم و غيره بستگي دارد

براي بيان مزاياي بانك اطالعات مثفال زيفر را در . گردد، ضرورت به كارگيري بانك اطالعات بيشتر خواهد شد :نور بگيريد

اين بانك اطالعفات بسفيار كوچفك و . كنيد ي بانك اطالعات طراحي ميا فرض كنيد، براي فروشگاه سادهامّا همين بانك اطالعات را براي فروشفگاه . ساده است و شايد امتيازات استفاده از بانك اطالعات به چشم نيايد

. دكنف اي بزرگ در نور بگيريد كه داراي انبارهاي زيادي است و موجودي انبارها بفه سفرعت تغييفر مفي زنجيرهشفوند، در امتيازات سيستم بانك اطالعات نسبت به سيستم سنتي كفه ركوردهفا بفر روي كاغفذ نگهفداري مفي

:اند برخي از مزاياي بانك اطالعات در زير آمده. آيند گونه موارد، بيشتر به چشم مي اين

ي متنفي حجفيم هفا هاي بانك اطالعات داراي ساختار هستند، نيازي به نگهداري فايفل چون داده :فشردگی‌

.گردد مي اطالعات سازي فشرده باعث بنابراين، .كند مي جلوگيري (بدون ساختار) نامنوم هاي داده ورود از و نيست

مخصوصفا سيسفتم توزيفع . ها را بازيابي و به هنگام كند تر از انسان داده تواند سريع مي سيستم :سرعت‌

تفر انجفام و موردي بسيار سريع سراسریهاي به درخواست گويي ، پاسخ(اي مانند فروشگاه زنجيره)شده باشد .گردد مي

ها به روش دستي و سنتي كه به فضاي زيادي نيفاز ها در نگهداري فايل خيلي از يكنواختي :بودجه‌کمتر

هاي بزرگ و كارمندان زيادي براي نگهفداري و پفردازش دارند، حذف خواهند شد و ديگر نيازي به ساختمان .باشد اطالعات نمي

زيرا، اطالعات به صورت . گيرند در هر زمان اطالعات دييق و به هنگام شده در اختيار يرار مي :دسترسی

.شوند پارچه نگهداري مي مجتمع و يك

زيرا، اطالعات در يك نقطه . توانند در مقابل دستيابي غيريانوني و غيرمجاز حفظ شود ها مي داده :حفاظت

توان از طريق فايروال، تعريف حساب كفاربري و كلمفه عبفور از ورود اففراد مي ،نبنابراي .گردند نگهداري مي .غيرمجاز جلوگيري كرد

اما، يك . هاي اطالعات بزرگ و پيچيده باشند، چشمگيرتر است البته اين مزايا در محيط چند كاربره كه بانكشوود‌توا‌‌‌‌اطالعوات‌موجوود‌موی‌‌‌‌سیستم‌بانک: امتياز ويژه در چنين محيطي وجود دارد و آن عبارت است از

ايفن (. اي برخفوردار اسفت اين موضوع از اهميت ويفژه )داشته باشد کنترل‌مرکزیهايش بر روي داده مؤسسهدر مؤسسات فايفد بانفك . كنند، متفاوت است وضعيت با وضعيتي كه در مؤسسات بدون بانك اطالعات كار مي

هاي مخصوصفي بفه را دارند، گاهي نيز نوارها و ديسك هاي خاص خودشان اطالعات، هر برنامه كاربردي فايل .ها با روش سيستماتيك دشوار است اند و كنترل بر روي داده ها پراكنده بنابراين، داده. خود دارند

www.kolbedanesh.com

Page 20: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

طراحی بانک اطالعاتی .2-1-2

ر بانفك اطالعات د. اي است ترين آنها بانك اطالعات رابطه هاي اطالعاتي مختلفي وجود دارند كه مهم بانكيعني، از . تر شود سازي و بازيابي اطالعات بهينه گردند تا ذخيره اي، بين جداول مختلف توزيع مي اطالعات رابطه

ايفن . هاي تهي را نيفز كفاهش خواهفد داد دهد و داده نومي را كاهش مي گردد، بي ها جلوگيري مي افزونگي دادهبنابراين، هرچه بانك اطالعات بهتفر طراحفي شفود، . رددافتد كه بانك اطالعات خوب طراحي گ زماني اتفاق مي

ولي چنانچه بانك اطالعفات بفد طراحفي . ابزار مهمي براي مديريت بر اطالعات شخصي تجاري يا اداري استهفا صفورت گيفرد، پس، هرچه ويت بيشتري براي طراحفي و تحليفل داده . گردد، ارزش چنداني نخواهد داشت

توان بانفك اطالعفات را ايجفاد ماني كه طراحي كامل بررسي گرديد، به راحتي ميز. آيد نتيجه بهتري بدست مي .نمود

در ايفن فرآينفد، ابتفدا، . گردد كه براي بانك اطالعات نياز داريم فرآيند طراحي با تحليل كارهايي شروع مي. ها پي ببريد هاي آن تهبا كاربران مصاحبه كرده تا به خواس. بايد مشخص كنيد سيستم چه كاري را بايد انجام دهد

خواهند از سيستم جديد اسفتفاده ويتي كاربران مي. توجه داشته باشيد كه فرآيند طراحي، فرآيندي تكراري استوجوهفاي خفاص، و فيلفدهاي هفا، پفرس هفاي ورود داده كنند، مثفل ففرم هاي آن فكر مي كنند، راجع به ويژگي

.محاسباتيدر اين صفورت، . طه خاتمه يابد و توسعه بانك اطالعات شروع گردداز طرف ديگر، طراحي بايد در يك نق

فرآيند طراحي بانك اطالعات را . هاي بعدي سيستم منوور كنيد توانيد در نسخه هاي جديد سيستم را مي خواسته :توان به مراحل زير تقسيم كرد كه هر مرحله داراي هدف خاصي است ميشفود تفا فرم كاربران بررسي مي. گردد مرحله، با كاربران مصاحبه ميدر اين :‌های‌کاربران‌تعیین‌خواسته‌‌ .1

.هاي آنها از بانك اطالعات مشخص گردد خواسته

زيرا، چنانچه . هاي جداول است راحي توزيع دادهطهاي ترين بخش يكي از مهم:‌ها‌در‌جداول‌توزیع‌داده‌‌ .8اين . كند هاي تهي در جداول جلوگيري مي ادهنومي و ورود د مورد، بي طراحي جداول خوب باشد، از تكرار بي

.بينيد سازي را مي افتد كه در ادامه نرمال سازي جداول اتفاق مي كار با نرمال .فيلدهاي هر ركورد را در هر جدول مشخص نماييد .4 .شندكنيد تا تضمين شود كه هيچ دو ركورد يكسان نبا براي هر جدول كليد اوليه و كليدهاي كانديد را تعيين .3 .وجوها را از چند جدول تهيه كنيد ارتباط بين جداول را تعيين كنيد تا بتوانيد پرس .6 .كند مي را برطرف كاربران نيازهاي شده طراحي اطالعات بانك شويد، را با كاربران مرور كنيد تا مطمئن طراحي .7 .ها را در آنها وارد نماييد جداول بانك اطالعات را ايجاد كرده داده .8تر نتايج ايي بانك اطالعات را تحليل كنيد و بانك اطالعات طراحي شده را بهينه نماييد تا بتوانيد سريعكار .7

.وجوها را دريافت كنيد پرس

www.kolbedanesh.com

Page 21: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

ها سازی داده نرمال. 3-1-2

سازي اين اسفت كفه هدف نهايي نرمال. هاي بانك اطالعاتي است سازي، فرآيند تنويم ساختار جدول نرمالبفه . هاي زايد بفه حفدايل برسفند ترين ساختار آن تبديل شود و داده در بانك اطالعاتي به سادههاي موجود داده

. است 8هاي تهي نومي و كاهش داده سازي، كاهش افزونگي داده، كاهش بي نرمال اوليه عبارت ديگر، اهداف آيفاي كفاد . است‌1الهای‌نرم‌فرمسازي، يك منشأ رياضي پيچيده دارد كه شامل مراحل خاصي به نام نرمال

شخص ديگري بفه 11.معروف هستند 3NFو 1NF ،2NFدر مقاله اوليه خود سه فرم نرمال را معرفي كرد كه به BCNFبه همراه كاد فرم نرمال ديگري به نام « بويس»نام

سفازي هاي نرمفال بعدها ديگران فرم. را تعريف كرد 114NF 5وNF تفا . نرمفال بيشفتر باشفد، محفدوديت تسفت بيشفتر اسفت هرچه ففرم . را معرفي كردند كه نادرند .براي بانك اطالعاتي كافي است( 3NF)سازي فرم سوم نرمال

بفه . بيش از يك يلم داده را شامل نشود( ستون)شود كه هيچ فيلدي تست مي سازی‌اول،‌در‌فرم‌نرمال

عفالوه بفر . و پالك تقسفيم شفود هاي كشور، استان، شهرستان، خيابان، كوچه عنوان مثال، آدرس بايد به بخشبه عنوان مثال، از تكرار بعضي از فيلدهاي يفك . شوند هاي تكراري حذف مي سازي داده اين، در اين فرم نرمال

:تر، جدولي فرم نرمال اول است كه به زبان ساده. كند ركورد جلوگيري مي

.همه كليدهاي آن تعريف شده باشند

.داشته باشند 12وابستگي تابعي اوليه تمام فيلدهاي آن به كليد

.تقسيم شوند خانوادگی‌نامو نامبايد به فيلدهاي نامفيلد . فيلدهاي آن داراي دامنه تو در تو نباشند

وابسته نباشد، اوليه هاي كليد هرگاه جدولي فرم نرمال اول باشد و فيلدهاي آن به بخشفرم‌نرمال‌دوم،‌

.فرم نرمال دوم است

گاه جدولي فرم نرمال دوم باشد و فيلدهاي غيركليد آن به فيلفدهاي غيركليفد ديگفر هرفرم‌نرمال‌سوم،‌

تفوان معفدل ، مينمرهو تعداد‌واحدبه عنوان مثال، با استفاده از فيلدهاي . وابسته نباشد، فرم نرمال سوم است .در نتيجه نيازي به فيلد معدل در جدول نيست. دانشجو را محاسبه كرد

اي سفازي جفداول آن توجفه ويفژه نمايد، به نرمال كه ويتي بانك اطالعاتي را طراحي مي توجه داشته باشيد .سازي جداول موجب افزايش كارايي خواهد شد زيرا، نرمال. داشته باشيد

SQL Serverبانک اطالعات . 2-2

اي عفاده ال اي كه يفدرت ففوق هاي بانك اطالعات رابطه ، يكي از سيستمSQL Serverسيستم بانك اطالعات

شفود، گفتفه مفي SQl Serverارا ه شده است و آنچه در اين كتاب در مورد SQL Serverنسخ مختلفي از . دارد

SQL Server 2008 باشد مي.

8- NULL 2- Normal Forms 3- First Normal Form, Second Normal Form, Thrid Normal Form

4- Boyce- codd Normal

Aداشته باشیم، آنگاه وابستگي تابعي R رابطه در Bو Aد اگر دو فیل -۸۲ B ها در برقرار است اگر براي تمام رابطهR به ازاي هر مقدار ،A

.داشته باشیم Bفقط يك مقدار

www.kolbedanesh.com

Page 22: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

DBMS)بانك اطالعات مديريت اين سيستم

هاي اطالعات موجفود را بفه درصد از بانك 71، در حدود (13. هاي يديمي و جديد، كوچك و بزرگ يابل استفاده اسفت زمانخود اختصاص داده است، به طوري كه براي سا

.كنيم را بررسي مي SQL Serverبه همين دليل، در اين كتاب بانك اطالعات SQL Server اند از هاي مختلفي دارد كه برخي از آنها عبارت ويژگي:

دازشفگرهاي يفديمي، پر هفاي CPUاين نسخه عالوه بر ايفن كفه :افزارهای‌جدید‌پشتیبانی‌از‌سخت

بنابراين، حافوه يابل دسترس و سرعت اين نسفخه بانفك اطالعفات . نمايد بيتي را نيز پشتيباني مي 64جديدي .يابد افزايش مي

Varbinaryو XMLاز يبيفل هاي معمولي، انواع داده اين نسخه عالوه بر داده :پشتیبانی‌از‌انواع‌جدید

، براي ذخيفره Varbinaryرود و نوع به كار مي XMLبازيابي اسناد براي ذخيره و XMLكه كند را پشتيباني مي .روند و بازيابي تصوير در فيلدهاي جداول به كار مي

توانست پشتيباني نمونه را مي 16حداكثر تا SQL Server 2000بانك اطالعات :پشتیبانی‌از‌چند‌نمونه

.دنماي تواند پشتيباني نمونه مي 51ولي، اين نسخه از . كند

توان به چند پارتيشن تبفديل بزرگ را مي 14هاي در اين نسخه، جداول و شاخص :ها‌بندی‌داده‌پارتیشن

.هاي خاصي دستيابي پيدا كرد تر بتوان به داده نمود و در چندين پارتيشن مختلف يرار داد تا سريع

گيفري يت گزارشيكي از ابزارهاي بسيار مهم بانك اطالعات، مدير :گیری‌های‌گزارش‌بهبود‌سرویس

.مندي براي توليد گزارش دارد اين نسخه ابزار يدرت. است

در . كنفد كاتالوگ مكاني است كه اشياي موجود در بانك اطالعات را نگهداري مفي :بهبود‌در‌کاتالوگ

شفدند، در حفالي هاي اوليه ذخيره مي و يبل از آن، كاتالوگ به عنوان بخشي از داده SQL Server 2000نسخه .جهت نگهداري كاتالوگ در نور گرفته شده است 15ديد 251در اين نسخه حدود كه

ورك پارچگي با فريم يك 2008و 2005هاي ترين تحول نسخه مهم :نت‌ورک‌دات‌پارچيی‌با‌فریم‌یک

شفوند، ، توابعي كه توسط كاربر تعريف مي16هاي ذخيره شده پارچگي امكان توليد رويه اين يك. نت است داتو Vb.NET ،C#.NET ،VC++.NETنويسفي از يبيفل هفاي برنامفه ها و غيره را در يكي از زبان ها، كرسرتريگر

J#.NET دهد مي.

معرفی بانک اطالعاتی نمونه. 3-2

سفازي ايفن بانفك سپس مراحل طراحي و پياده. نمايم در اين بخش يك بانك اطالعاتي نمونه را معرفي ميبانك اطالعاتي كه براي اين كتاب در نور گرفته شده است، اطالعفات مربفوط . كنيم اطالعاتي را با هم مرور مي

بفراي طراحفي ايفن بانفك . نمايفد تان يا يفك سفازمان را نگهفداري مفي هاي وصولي هاي صادر و چك به چك :اطالعاتي، مراحل زير بايد انجام شود

13- Database Management System 2- Index 3- View

16- Stored Procedures

www.kolbedanesh.com

Page 23: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

گزارشات و موارد ديگر مورد نيفاز كفاربران ها، نمودارها، در اين مرحله بايد فرم :تعیین‌اهداف‌بانک‌اطالعاتی‌ .0 .سازي و با كاربران مرور شود ها، گزارشات و غيره طراحي، پياده در اين مرحله، همچنين بايد فرم. تعيين شود

در اين مرحلفه . ترين مرحله طراحي بانك اطالعاتي، تعيين چگونگي توزيع داده است مهم:‌ها‌توزیع‌داده‌ .2در اين بخش بايد تعداد جفداول بانفك اطالعفاتي، . هايي در چه جداولي توزيع شود ادهبايد تعيين گردد، چه د

در اين بانك اطالعاتي نمونه چند جدول در نوفر گرفتفه . فيلدهاي هر يك از جداول و نوع فيلدها تعيين شود :اند از شده است كه برخي از آنها عبارت

اره بانفك، نفام بانفك، كفد شفهر بانفك و غيفره را ها از يبيل شم اطالعات مربوط به بانك :Bankجدول‌

(.را مشاهده كنيد 2-1جدول)كند نگهداري مي

هاي صادره و وارده از يبيل شفماره چفك، شفماره بانفك، تفاريخ اطالعاتي مربوط به چك :Chekجدول‌

(.را ببينيد 2-1جدول)نمايد صدور، مبلغ چك، تاريخ وصول و غيره را نگهداري مي

كد كفاربر، : اند از اين اطالعات عبارت. كند اطالعات كاربران بانك اطالعات را نگهداري مي :tblUserجدول‌

(.را مشاهده كنيد 2-1جدول)خانوادگي كاربر، سطح دسترسي و تصوير كاربر نام كاربر، كلمه عبور، نام

ن شفود نفوع بعد از اين كه فيلدهاي جدول مشخص گرديد، بايد تعيي:‌های‌جدولو‌فیلدتعیین‌ساختار‌‌ .3در اين بخش بايد . كنند باشد يا خير، چه فضايي از حافوه را اشغال مي Nullتوانند هر فيلد چيست، آيا فيلد مي

نفام، انفدازه، نفوع و )تعيين كنيم هر جدول از چند فيلد تشكيل شفده اسفت و هفر فيلفد داراي چفه خواصفي .اند آمده 2-1فيلدهاي بانك اطالعاتي نمونه در جدول. است( ها محدوديت

هفر اوليه هاي مهم طراحي بانك اطالعاتي تعيين فيلد كليد يكي از بخش:‌جداول‌18اولیهتعیین‌فیلد‌کلید‌ .4 : ازاند اوليه داراي سه خاصيت است كه عبارتفيلد كليد . جدول است

به طور . تخاب كنيديعني اگر فيلدي را به عنوان كليد اوليه ان. باشد (Null)تواند تهي نمياوليه فيلد كليد .0 .يابد به آن تخصيص مي NOT NULLخودكار محدوديت

كند كه هيچ دو ركفوردي در جفدول بفراي آن فيلفد داراي مقفدار تضمين مي( يا كليد)فيلد كليد اوليه .2 .كند يعني، فيلد كليد از ورود ركوردهاي تكراري در جدول جلوگيري مي. باشند يكساني نمي

به عنوان مثال، در بانك اطالعفاتي نمونفه، در . شوند راساس فيلد كليد اوليه مرتب مياطالعات جدول ب .3زيرا، بفراي هفيچ دو كفاربري مقفدار ايفن فيلفد برابفر . ، فيلد كليد اوليه استUserName، فيلد tblUserجدول

، فيلفد Bank ولفي در جفدول . باشد، يا به عبارت ديگر، هيچ دو كاربري حساب كفاربري يكسفاني ندارنفد نميBankCode فيلد كليد اوليه است.

اي، ارتباطي است كه جفداول هاي اوليه بانك اطالعات رابطه ژگييكي از وي :ها‌تعیین‌ارتباط‌بین‌جدول‌ .5هفا در مفورد داده تكرار بفي )شود تا از افزونگي ارتباط بين جداول موجب مي. توانند با يكديگر داشته باشند مي

.شود بريرار مي BankCodeبا استفاده از فيلد Bankو Chekارتباط بين جدول . دجلوگيري شو( جدول

17- Primary Key

www.kolbedanesh.com

Page 24: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

‌.جداول‌بانک‌اطالعات‌نمونه‌‌‌‌8-1جدول‌‌شرح‌نوع‌نام‌فیلد‌نام‌جدول

Bank

BankCode Varchar(6) كد بانك BankName Varchar(50) نام بانك CityCode Varchar(6) كد شهر بانك ShobeCode Varchar(6) كد شعبه بانك Tel Varchar(15) شماره تلفن بانك Address Varchar(250) آدرس بانك

Chek

ChekNo Varchar(15) شماره چك BackCode Varchar(6) كد بانك مربوط به چك ChekType Varchar(3) كد نوع چك Username Varchar(10) نام كاربر SodorDate Varchar(10) خ صدور چكتاري RasidDate Varchar(10) تاريخ سررسيد چك VosolDate Varchar(10) تاريخ وصول Mablag Numberic مبلغ چك Comment Varchar(250) توضيحات

TblUser

UserName Varchar(10) حساب كاربري Pass Varchar(10) كلمه عبور Fuser Varchar(15) نام كاربر LUser Varchar(20) خانوادگي نام Access Varchar(1) نحوه دستيابي Picture Varbinary تصوير كاربر

City

CityCode Varchar(6) كد شهرستان CityName Varchar(30) نام شهرستان OstanCode Varchar(6) كد استان

Ostan OstanCode Varchar(6) كد استان OstanName Varchar(30) ستاننام ا

Shobe ShobeCode Varchar(6) كد شعبه ShobeName Varchar(30) نام شعبه

ترين شفيء مهم. بانك اطالعاتي از اشياي متعددي تشكيل شده است :تعیین‌اشیای‌دیير‌بانک‌اطالعات‌ .6از يبيل اشياي ديگر . رود هاي بانك اطالعاتي به كار مي جدول براي نگهداري داده. بانك اطالعاتي جدول است

.و غيره در بانك اطالعاتي وجود دارند 22، تريگرها21، كرسرها21هاي ذخيره شده ، رويه11، توابع18ديدها

1- Views 2- Functions 20- Stored Procedures 4 - Cursors 5- Triggers

www.kolbedanesh.com

Page 25: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

در ادامه كتاب با اين اشياء آشنا خواهيد شد و چگونگي ايجفاد، حفذف و ويفرايش ايفن اشفيا را در بانفك .آموزيم اطالعاتي مي

www.kolbedanesh.com

Page 26: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

‌‌

فصـل

33 ایجاد بانک اطالعات و بخشی از

جـداول آن‌

خفواهيم يفك بانفك در اين فصل مفي . و بانك اطالعات آشنا شديم #Cبا مفاهيم اوليه 2و 1هاي در فصل

يبل از اين كه بتفوانيم بانفك اطالعفات را . ايجاد كرده، جداول آن را ايجاد كنيم #Cاطالعات را از طريق برنامه :آموزيم مفاهيم زير را بي ايجاد كنيم بايد

SQL Serverايجاد بانك اطالعات و جداول آن در .0 ADO.NETمفهوم .2 اتصال به بانك اطالعات .3 Commandآشنايي با شيء .4

بيان گرديد را 2كه در فصل يبا يك مثال بانك اطالعات سپسآموزيم و در اين فصل ابتدا اين مفاهيم را مي .جداول آن را به آن اضافه خواهيم كرد ايجاد كرده و #Cدر

ایجاد بانک اطالعات و جداول آن. 1-3

يبل از اينكفه . جداول آن و ساختار آنها را مشاهده كرديد. در فصل دوم يك بانك اطالعات نمونه را ديديدن اضافه كنيد تفا بخواهيد كاري را بر روي بانك اطالعات انجام دهيد، بايد آن را ايجاد نموده، جداول آن را به آ

،بنابراين. ه يا حذف كنيدكردهاي موجود را ويرايش داده. وارد نماييد ها را در آن دادههاي بعدي بتوانيد در فصل .پردازيم در اين بخش به ايجاد، تغيير، حذف بانك اطالعات و جداول آن مي

ایجاد بانک اطالعات. 1-1-3

توانفد چنفدين بانفك اطالعفات را بفه طفور همزمفان مفي SQL Serverدهنده بانك اطالعات يك سرويس بففراي ايففن منوففور از دسففتور . بنففابراين بايففد بتففوان بانففك اطالعففات جديففد ايجففاد كففرد . نگهففداري كنففد

CREATE DATABASE شود به صورت زير استفاده مي:

CREATE DATABASE database_name [ ON [ PRIMARY ] [ <filespec> [ ,...n ]

[ , <filegroup> [ ,...n ] ]

[ LOG ON { <filespec> [ ,...n ] } ]

]

[ COLLATE collation_name ]

[ WITH <external_access_option> ] ][;]

www.kolbedanesh.com

Page 27: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

To attach a database

CREATE DATABASE database_name

ON <filespec> [ ,...n ]

FOR { ATTACH [ WITH <service_broker_option> ]

| ATTACH_REBUILD_LOG } [;]

<filespec> ::= {

(

NAME = logical_file_name ,

FILENAME = 'os_file_name'

[ , SIZE = size [ KB | MB | GB | TB ] ]

[ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]

[ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ]

) [ ,...n ] }

<filegroup> ::= {

FILEGROUP filegroup_name [ DEFAULT ]

<filespec> [ ,...n ] }

. آمده است 3-1شرح پارامترهاي اين دستور در جداول

‌.CREATE DATABASEهای‌دستور‌‌گزینه‌‌‌‌‌4-1جدول‌

هدف‌گزینه

database_name

يكتفا ( سفرور )دهنفده كند كه بايد در يك سرويس م بانك اطالعات را تعيين ميناكنفد و حفداكثر گفذاري شناسفه پيفروي مفي نام بانك اطالعات از يانون نفام . باشد

.حرف باشد 123تواند مي

ON ، نففام فايففل داده و filespec. كنففد فايففل داده بانففك اطالعففات را تعيففين مففي

filegroup كند هاي آنها را تعيين مي هاي فايل كاربر و فايل ليستي از گروه.

LOG ON اگر تعيين نگردد، يك فايل كارنامفه بفه طفور . كند را تعيين مي( Log)نامه فايل كار

.درصد اندازه فايل داده است 25شود كه اندازه آن خودكار ايجاد مي

FOR ATTACH .رود عامفل بفه كفار مفي هفاي سيسفتم براي ايجاد بانك اطالعفات از طريفق فايفل

filespec نمايد نام فايل اصلي بانك اطالعات را تعيين مي.

COLLATE توان زبان بانك با اين پارامتر مي. كند فرض بانك اطالعات را تعيين مي فونت پيش

.اطالعات را نيز تعيين نمود

PRIMARY ليستfilespecكند هاي فايل اصلي بانك اطالعات را تعريف مي. NAME = Logical_file

name_ .شناسد با اين نام منطقي آن را مي SQL Serverكند كه نام منطقي فايل را تعيين مي

FILENAME = os_ file_name

.كند نام فايل بانك اطالعات را در سطح سيستم عامل تعيين مي

SIZE اندازه فايل اصليfilespec كند را تعيين مي.

MAXSIZE ازه فايل حداكثر اندfilespec كند را تعيين مي.

FILEGROWTH = Growth_increment

را ( filespec)هاي اصفلي هنگامي فضاي فايل پر شود، اين گزينه حداكثر رشد فايل .نمايد تا ديسك پر گردد اگر ذكر نشود، فايل آنقدر رشد مي. كند تعيين مي

FILEGROUP Filegroup_name هاي كند كه فايل ينام گروهي را تعيين مfilespec1 ،filespec2، ... وfilespecn در

www.kolbedanesh.com

Page 28: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

.آن گروه يرار دارند

:به عنوان مثال، دستورات زير را ببينيد

CREATE DATABASE Test ON PRIMARY (NAME = Test_data,

FILENAME = 'E:\Test\Test_data.MDF',

SIZE = 40,

MAXSIZE = 100)

LOG ON (NAME = Test_log,

FILENAME = 'E:\Test\Test_log.LDF',

SIZE = 40,

MAXSIZE = 100)

GO

ايفن بانفك داراي هفاي فايفل . كنفد ايجفاد مفي Testپوشه Eرا در درايو Testاين دستورات بانك اطالعات .است 100MB، حداكثر اندازه 40MBهايي از يبيل اندازه ويژگي

تغییر خواص بانک اطالعات موجود. 2-1-3

عفات از الگاهي نياز است خواص بانفك اط . نيدر بخش يبل آموختيد كه چگونه بانك اطالعات را ايجاد كدتوانيد از دستور براي اين منوور مي. يبيل اندازه، حداكثر اندازه و غيره را پس از ايجاد بانك اطالعات تغيير دهيد

ALTER DATABASE رود مي كار هاين دستور به صورت زير ب. استفاده كنيد:

ALTER DATABASE database_name { <add_or_modify_files>

| <add_or_modify_filegroups>

| <set_database_options>

| MODIFY NAME = new_database_name

| COLLATE collation_name }

[;]

<add_or_modify_files>::= {

ADD FILE <filespec> [ ,...n ]

[ TO FILEGROUP { filegroup_name | DEFAULT } ]

| ADD LOG FILE <filespec> [ ,...n ]

| REMOVE FILE logical_file_name

| MODIFY FILE <filespec> }

<filespec>::= (

NAME = logical_file_name

[ , NEWNAME = new_logical_name ]

[ , FILENAME = 'os_file_name' ]

[ , SIZE = size [ KB | MB | GB | TB ] ]

[ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]

[ , FILEGROWTH = growth_increment [ KB | MB | GB | TB| % ] ]

[ , OFFLINE ] )

<add_or_modify_filegroups>::= {

| ADD FILEGROUP filegroup_name

| REMOVE FILEGROUP filegroup_name

| MODIFY FILEGROUP filegroup_name

{ <filegroup_updatability_option>

| DEFAULT

| NAME = new_filegroup_name } }

.آمده است 3-2در جدول ALTER DATABASEپارامترهاي برخي از توضيح

www.kolbedanesh.com

Page 29: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

:به عنوان مثال، دستور زير را در نور بگيريد

ALTER DATABASE Test MODIFY FILE (NAME = Test_data,

SIZE = 50,

MAXSIZE = 110)

GO

.دهد تغيير مي 110MBو 50MBرا به Testاين دستور اندازه و حداكثر اندازه بانك اطالعات

.ALTER DATABASEهای‌دستور‌‌ینهگز‌‌‌‌‌4-8جدول‌

‌هدف‌گزینه

database_name كند كه بايد مشخصات آن تغيير كند نام بانك اطالعات را تعيين مي.

ADD FILE <filespec>… هاي فايلfilespec1 تاfilespecn كند را به بانك اطالعات اضافه مي. To FILEGROUP filegroup_name در گروه هاي اضافه شده را فايلfilegroup_name دهد يرار مي. ADD LOG FILE filespace …

.كند را به بانك اطالعات اضافه مي filespecnتا filespec1هاي كارنامه فايل

REMOVE FILE logical_ file_name

ايفن فايفل يبفل از . كند را از بانك اطالعات حذف مي logical_file_nameفايل .خالي شود EMPTYFILEحذف، بايد با دستور

ADD FILEGROUP filegroup_name

.كند اضافه مي filegroup_nameيك گروه جديدي به نام

MODIFY FILE filespec فايلfilespec كند را براي تغييراتي از يبيل نام، اندازه و غيره آماده مي. MODIFY NAME= new_ dbname

.دهد يير ميتغ new_dbnameنام بانك اطالعات را به

MODIFY FILEGROUP filegroup_name …

ايفن تغييفرات شفامل فقفط . كند كه بايفد تغييفر يابفد گروه فايل را مشخص مي .است( READ WRITE)و خواندني و نوشتني ( READ ONLY)خواندني

WITH <termination ين بريفد، ايفن پفارامتر تعيف به حالت ديگر مفي ( مدي)ويتي تراكنش را از حالتي

.كنند( Rollback)گرد هاي نايص چه مويع عقب كند تراكنش ميCOLLATE <collation_name>

.دهد تغيير مي collation_nameنام تلفيق بانك اطالعات را به

حذف بانک اطالعات. 3-1-3

حفذف هاي اطالعات اضافي را بنابراين بايد بانك. كنند هاي اطالعات فضاي روي ديسك را اشغال مي بانكاگفر بانفك . اسفتفاده كنيفد DROP DATABASEتوانيد از دسفتور براي حذف بانك اطالعات موجود مي. نمود

بنابراين، در هنگام استفاده . باشند اطالعات را حذف نماييد، كليه اشيا آن حذف خواهند شد كه يابل بازيابي نمي به DROP DATABASEدستور . را حذف نكنيدهاي اطالعات مورد نيازتان از اين دستور ديت نماييد تا بانك

:رود صورت زير به كار مي

DROP DATABASE { database_name } [ ,...n ] [;]

www.kolbedanesh.com

Page 30: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

database_name[ , .. , n]اگفر بانفك . خواهيد حفذف كنيفد كنند كه مي هاي اطالعات را تعيين مي ، نام بانك .شد اطالعات را حذف كنيد كليه جداول و اشيا آن حذف خواهند

.اكنون دستورات زير را اجرا كنيد

DROP DATABASE Test GO

.كنند را حذف مي Testاين دستورات بانك اطالعات

، اگفر بانفك اطالعفات كفه DROP DATABASEو ALTER DATABASEدر هنگام اجفراي دسفتورات ولي در هنگفام . شود ظاهر ميخواهيم خواص آن را تغيير دهيم يا آن را حذف كنيم، موجود نباشد، پيام خطا مي

خواهيد ايجاد كنيد از يبل موجود باشفد، چنانچه بانك اطالعات كه مي CREATE DATABASEاجراي دستور .پيام خطا ظاهر خواهد شد

اشیای بانک اطالعات. 2-3

بانك اطالعات براي اهداف تجاري طراحي شده است كه با ايجاد بانك اطالعات اهداف تجاري آن برآوردهبراي اينكه اهداف تجاري بانك اطالعات برآورده شود، بايد اشياي بانفك اطالعفات را بفه آن اضفافه . شود نمي

برخي از . بانك اطالعات داراي اشياي متعددي است كه هر يك از اشيا وظيفه خاصي را به عهده دارند. نمود :اند اشياي بانك اطالعات در زير آمده

اي به كفار راي ذخيره كردن ارتباط بين جداول در بانك اطالعات رابطهب :‌Database Diagramsشیء‌ .0

.ها جلوگيري كند تواند از افزونگي داده ارتباط بين جداول مي. رود مي

هاي بانك داده( نگهداري)ترين اشياي بانك اطالعات است كه براي ذخيره يكي از مهم:‌‌Tablesشیء‌‌.2

.رود اطالعات به كار مي

هاي مجازي ديگري را ايجاد كرد تا بتوان بفا توان جدول از طريق يك يا چند جدول مي:‌‌Viewsشیء‌. 3

به جداول مجازي كه در بانك اطالعات ايجفاد . توجه به نياز كاربران، فيلدهاي خاصي را در اختيار آنها يرار داد

.رود اند، به كار مي اين شيء براي نگهداري ديدهايي كه از جداول ايجاد شده. گويند 23دیدكنيد، مي

.باشد نام ديگري براي هر يك از حوزه اشيا شما مي:‌‌Synonymsشیء‌‌.4

هاي ذخيفره شفده و توابفع بفه كفار براي ذخيره كردن اشيايي از يبيل رويه :‌Programmabilityشیء‌‌.5

و چگونگي اسفتفاده از هاي ذخيره شده بيشتر آشنا خواهيد شد هاي بعد با مفهوم توابع و رويه در فصل. رود مي

.خواهيد ديد C#.NETآنها را در

.كند بانك اطالعات را ذخيره مي Brokerهاي سرويس:‌‌Service Brokersشیء‌‌.6

.كند اشياي امنيتي بانك اطالعات را ذخيره مي:‌‌Securityشیء‌‌.7

23- View

www.kolbedanesh.com

Page 31: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

خواهيفد #Cري آنها را در در ادامه با نحوه ايجاد اشيا بانك اطالعات آشنا خواهيد شد و چگونگي به كارگي

.ديد

SQLایجاد جدول با دستور . 1-2-3

اي از فيلدها شود و ركورد نيز از مجموعه اي از ركوردها تشكيل مي دانيد جدول از مجموعه همانطور كه مي بنابراين يبل از اينكه به ايجاد جفدول بپفردازيم، . گردد و فيلدها نيز حاوي تعدادي از خواص هستند تشكيل مي

:اند اين خواص در زير آمده. بايد خواص فيلدها را بررسي كنيم

ها در بانك اطالعات گذاري شناسه است كه از يانون نام 24هر فيلد در جدول داراي يك نام يكتا :نام‌فیلد

.كند پيروي مي

هايي ا تعداد بايتتواند ذخيره كند، ثاني اي را مي براي هر فيلد بايد تعيين شود، اوال چه نوع داده‌:نوع‌فیلد

ها و مقدار فضايي كه هر يك از انواع در بانفك اطالعفات نيفاز انواع داده. تواند ذخيره كند، چقدر است كه مي .آمده است 3-3دارند، در جدول

اسفت كفه ( ييدهاي)هايي كند هر فيلد داراي چه محدوديت اين ويژگي تعيين مي‌:های‌فیلد‌محدودیت

:اند ا در زير آمدهه برخي از اين محدوديت

:فيلدي كليدي اوليه است كه داراي شرايط زير باشد:‌86اولیهفیلد‌کلید‌‌‌.0

.در يك جدول مقدار هيچ دو ركوردي از اين فيلد يكسان نباشد

.اطالعات ركوردها براساس اين فيلد مرتب باشند

.باشد 26تواند تهي مقدر اين فيلد نمي

يعني، با استفاده از كليفد اوليفه يفك . رود بين دو جدول به كار مي براي ارتباط‌:88فیلد‌کلید‌خارجی‌‌.2

كليد خارجي در وايع كليد . را بريرار كرد توان ارتباط بين اين دو جدول جدول و كليد خارجي جدول ديگر مي .اصلي جدول ديگر در همان بانك است

وارد 28گر در فيلدي مقفدار جفاي خفالي ا. تواند تهي باشد كند كه مقدار فيلد مي تعيين مي :مقدار‌تهی‌‌.3

.كنيد، مقدار آن فيلد تهي نيست

تواند تهي باشد، يعني حتمفا بايفد در فيلفدهايي كفه محفدوديت مقدار فيلد نمي :‌NOT NULLمقدار‌‌.4

NOT NULL دارند، مقدار وارد شود.

در جدول منحصفر كند مقدار فيلدي كه داراي اين محدوديت است، تعيين مي :‌UNIQUEمحدودیت‌‌.5

.توان مقدار تكراري وارد نمود باشد و براي اين فيلد نمي به فرد مي

كليفد . رود اين محدوديت براي ايجاد ارتبفاط بفين دو جفدول بفه كفار مفي :‌Referencesمحدودیت‌‌.6

ليفه در آن كند، در جلوي اين واهه به همراه نام جدولي كفه كليفد او خارجي كه ارتباط بين جداول را بريرار مي

.گيرد جدول وجود دارد، يرار مي

1- Unique 2- Primary Key 3- NULL 4- Foreign Key 5- Space

www.kolbedanesh.com

Page 32: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

كند كه اگر كاربر براي فيلد مقفداري را اين محدوديت مقداري را تعيين مي:‌‌DEFAULTمحدودیت‌‌.7

.نمايد فرض فيلد را تعيين مي يعني، مقدار پيش. گيرد وارد نكند، آن مقدار در اين فيلد يرار مي

در اكسفس عمفل AutoNumberا اين فيلد مانند يك فيلفد شود ت موجب مي:‌‌IDENTITYمحدودیت.‌7.

كنيم تا به عنوان فيلفد كليفد هايي كه فيلد كليد وجود ندارد، معموال فيلدي از اين نوع انتخاب مي در جدول. كند .عمل كند

‌.SQL Serverانواع‌داده‌در‌‌‌‌‌‌4-4جدول‌‌هدف‌تعداد‌بایت‌نام

Int 4 است 647/483/147/2تا -648/483/147/2اعداد صحيح از. bigi nt 8 اعداد صحيح از 632تا 632 .است 1

binary(n) n كنند بايت را اشغال مي 255كثر يي حداود ها دو داده. bit 1 پذيرد را مي 1يا 1مقادير.

char(n) n به ازاي هر كاركتر يك بايت را اشغال پذيرد و كاركتر را مي 8111حداكثر تا

.كند ميdatatime 8 كند تاريخ و زمان را نگهداري مي.

decimal(p,s) و 1اعداد اعشاري يا صحيح 17حداكثر .كند را نگهداري مي 3810تا 3810float(n) 8 از مقدارE .است ريم 15آن تا كند و ديت مي را نگهداريE381079تا381079real(n) 4 تقريبا از مقدار/ E 383 /تا40 E383 (.ريم 7با تقريب )كند را نگهداري مي 40

Image 2هاي تصوير تا دادهGB ندك كيلوبايتي ذخيره مي 8را در صفحات.

money 8 5817/122337213685477تا-5818/122337213685477ارزي از هاي داده

.استvarchar(n) n*2 كند كاركتر را نگهداري مي 4111تا 1هاي يونيكد از داده. ntext n*2 است 1173741823هاي يونيكد با طول متغير كه طول آن داده.

numeric مترادف 17حداكثرDecimal است.

real 4 مترادفFloat است. smalldatetime 4 كند تركيب تاريخ و زمان با طول كوتاه را نگهداري مي. smallint 2 كند را نگهداري مي 767,32تا -768,32اعداد صحيح از. smalllong 8 كند ريم اعشار را نگهداري مي 4مقادير پولي با حداكثر.

sysname(n) n*2 رود و به ازاي هفر كفاركتر مي اشياي سيستم به كار ميبراي ذخيره كردن اسا .كند دو بايت را اشغال مي

timestamp رود براي نگهداري مهر زماني در بانك اطالعاتي به كار مي.

tinyint(n) n بايت كه 255تا 1اعداد صحيحn كند ها را مشخص مي تعداد بايت. varbinany(n) n كند نگهداري مي بايت را 255الگوي بيتي تا. uniquidentifier 16 دهد دسيمال كه شناسه يكتاي عمومي را نشان مي بايتي هگزا 16عدد.

www.kolbedanesh.com

Page 33: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

XML 2حداكثرGB براي نگهداري اسنادXML رود به كار مي.

varbinary(max) توانيفد تصفاوير را در آن گيرد كه مي در نور مي ياطالعات بايتي را به صورت

.ذخيره كنيد

: براي ايجاد جدول دو روش وجود دارد. توانيم به ايجاد جداول بپردازيم ن مياكنو SQLايجاد جدول با دستور . 2ايجاد جدول با روش طراحي .0

ترين روش ايجاد جفداول اگر بخواهيد از بانك اطالعات به صورت توزيع شده استفاده كنيد، بهتر و راحتجفدول را بفا روش ( فيلدهاي)هاي در اين روش، به جاي اين كه كاربر ستون .است SQLاستفاده از دستورات

Enterprise تغيير دهد، يفك اسفكريپت( اي از دسفتورات مجموعفهSQL اسفت ) نويسفد و بفه كفاربران در مفيتوانيفد از دسفتور مفي SQLبراي ايجاد جدول در . هاي مختلف اجازه اجراي اين اسكريپت را خواهد داد مكان

CREATE TABLE به صورت زير استفاده كنيد:

CREATE TABLE [ database_name . [ schema_name ] .] table_name

( { <column_definition> | <computed_column_definition> }

[ <table_constraint> ] [ ,...n ] )

[ ; ]

<column_definition> ::= column_name <data_type>

[ COLLATE collation_name ]

[ NULL | NOT NULL ]

[

[ CONSTRAINT constraint_name ] DEFAULT constant_expression ]

| [ IDENTITY [ ( seed ,increment ) ]

:روند در اين دستور پارامترهاي زير به كار مي ‌database_name‌:گردد ر آن ايجاد ميكند كه جدول د نام بانك اطالعات را تعيين مي.

‌schema_name‌:شود كند كه جدول در آن ايجاد مي نام شماي بانك اطالعات را تعيين مي.

‌table_name‌:كند كه بايد ايجاد شود نام جدولي را تعيين مي.

‌column_definition‌:گيرد هاي جدول يرار مي تعريف ستون.

‌computed_column_definition‌:كند ي را تعيين ميفيلدهاي محاسبات.

‌table_constraint‌:كند هاي جدول را تعريف مي محدوديت.

column_name‌:كند هاي جدول را تعيين مي نام ستون.

‌data_type‌:نمايد هاي جدول را مشخص مي نوع ستون.

‌COLLATE‌:كند زبان دريافت اطالعات ستون جدول را تعيين مي.

‌NULL‌:تواند تهي باشد كند محتواي ستون جدول مي محدوديتي است كه تعيين مي.

‌NOT NULL‌:تواند تهي باشد نمايد محتواي ستون جدول نمي محدوديتي است كه تعيين مي.

‌CONSTRAINT‌:كند محدوديت فيلد را تعيين مي.

‌IDENTIIY‌:كند كه فيلدهاي افزايشي را تعريف ميseed مقدار شروع فيلد افزايشي وincrement مقدار .كند افزايش را تعيين مي

www.kolbedanesh.com

Page 34: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

فصـل

4 های پایه بانک اطالعات کالسبخشی از

، رشته اتصفال و SqlConnection ،SqlCommandاز يبيل ADO.NETهاي در فصل يبل، با برخي از كالس

، DataSet ،DataTableهفاي مهفم ديگفر از يبيفل خفواهيم برخفي از كفالس در اين فصل مي. غيره آشنا شديمDataRow وDataColumn آموزيم را بي.

DataSetکالس . 1-4

اي از جداول و اطالعاتي درباره ارتباط بين ، از مجموعهDataSetيك . است ADO.NETاين كالس هسته هر درخواست از )كند از بانك اطالعات را نگهداري مي 21وجو آنها تشكيل شده است و حاصل نتايج پرس

اين است كه بدون اين كه به منبع DataSetهاي جالب يكي از ويژگي(. داردنام وجو‌پرسبانك اطالعات، يك يعني، پس از اين كه اطالعات را از بانك . توانيم از آن استفاده كنيم متصل باشيم، مي( بانك اطالعات)داده

هاي داده توانيم بدون اتصال به بانك اطالعات از ذخيره نموديم، مي DataSetاطالعات بازيابي كرديم و در از دو بخش DataSetبينيد، مي 4-1طور كه در شكل همان. ذخيره شده در آن استفاده كنيم

DataRelationCollection وDataTableCollection تشكيل شده است.

.DataSetاجزاي 4-1شكل

توان چندين جفدول يفا نتيجفه يرار دارد، بنابراين مي DataSetدر بخش DataTableCollectionچون شيء نگهفداري DataSetوجوهفا در يفك شفيء يعني، نتيجه هر يفك از پفرس . وجو را در آن يرار داد چندين پرس

كننففد، در بخففش وجوهففا يففا جففداول را نگهففداري مففي كففه نتيجففه پففرس DataTableايففن اشففياء . شففود مففيDataTableCollection گيرند يرار مي.

29- Query

www.kolbedanesh.com

Page 35: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

اسففت كففه از اشففياي DataRelationCollection، بخففش DataSetهففاي از طففرف ديگففر، يكففي از بخففش

DataRelationCollection اشياي . تشكيل شده استDataRelation كنفد ، ارتباط بين جداول را نگهفداري مفي .

شود، بلكه بايد آنها را صفراحتا بفا اسفتفاده از بايد توجه كنيد كه ارتباط بين جداول به طور خودكار ايجاد نمي

:اند در زير آمده DataSetبرخي از اجزاي . ايجاد نمود DataRelationالس ك

1 .DataTable 2 .DataRelation 3 .DataView 4 .DataAdapter

هاي موجفود در فايفل وجوها را نگهداري كند، داده تواند مقادير جداول و پرس مي DataSetكه عالوه براين

XML هاي موجود در تواند بخواند يا داده نيز ميراDataSet توان در فايفل را ميXML نوشفت(ADO.NET

تواند حاوي يك يفا مي DataSetهر (. كند براي انتقال داده بين عناصر مختلف برنامه استفاده مي XMLاز فايل

.كند ت را نگهداري مياطالعات يك جدول از بانك اطالعا DataTableباشد كه هر DataTableچند شيء

، اطالعفات موجفود در DataView. شفود استفاده مي DataRelationبراي ايجاد ارتباط بين جداول از كالس

DataTable كالس . دهد را نمايش ميDataAdapter براي كار كردن با ،DataSet ايفن كفالس . ضروري اسفت

براي بازيابي اطالعات از بانك اطالعات و يفرار . كند بريرار مي( بانك اطالعات)و منبع داده DataSetپلي بين

بفراي . گفردد اسفتفاده مفي DataAdapterاز كفالس DataSetو ثبت تغييرات انجام شفده در DataSetدادن در

4-1كفه در جفدول DataSetبراي اين منوور، از سفازنده . ايي از آن ايجاد نماييد بايد شي DataSetاستفاده از

خواص و متدهاي كالس . خواص آن را مقداردهي كرده از متدهاي آن نيز استفاده نماييد. اده كنيداند، استف آمده

DataSet اند آمده 4-3و 4-2در جداول.

.يرار دارد System.Dataدر فضاي نام DataSetشيء

.DataSetهای‌‌سازنده‌‌‌‌‌3-1جدول‌

‌هدف‌سازندهNew() DataSetرض ف اي بدون نوع نام با پيشNewDataSet كند ايجاد مي. New(dsName) DataSet اي بدون نوع با نام مشخص شدهdsName كند ايجاد مي.

.DataSetخواص‌‌‌‌‌‌3-8جدول‌

‌هدف‌خاصیتCasesentsive بزرگ يا كوچك فرق بگذارد يا خير حروف بين مقايسه كند كه آيا درهنگام مي تعيين. DataSetName نامDataSet كند عيين ميرا ت. DafaultViewManager فرض مربوط به سازي پيش فيلتر كردن يا مرتبDataSet كند را تعريف مي.

EnforceConstrains تعريف شفده اعمفال ها محدوديتكند كه آيا در هنگام تغيير ركوردها، تعيين مي

.شود يا خير

www.kolbedanesh.com

Page 36: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

.DataSetخواص‌‌‌‌‌‌3-8ادامه‌جدول‌

‌هدف‌خاصیتExtendedProperties كند اطالعات و خواص سفارشي كاربر را تعيين مي.

HasErrors داراي DataSetهفاي مربفوط بفه DataRowكنفد كفه آيفا ركفوردي از تعيين مي

.خطاهايي هستند يا خير

Locale كند ها تعيين مي را در هنگام مقايسه رشته( Locale information)اطالعات محلي

(.سه از چپ به راست يا از راست به چپ باشدبه عنوان مثال، مقاي)

NameSpace نوشفته يفا از آن خوانفده XMLشود ويتي كه در سند فضاي نامي كه استفاده مي

.شود ميPrefix يك پيشوندXML شود كه به عنوان نام مستعاري براي فضاي نام استفاده مي.

Relations هفا را DataTableارتبفاط بفين است كفه DataRelationيك كلكسيون از اشياي

.كنند تعيين مي

Tables

ها به طور Tableنام اين . است DataSetهاي موجود در DataTableكلكسيوني از متفدهايي بفراي اضفافه كفردن . اسفت ... و Table ،Table1 ، Table2ففرض پيش

.آمده است 4-4وجود دارند كه در جدول DataSetجداول به

.DataSetهای‌متد‌‌‌‌‌3-4جدول‌

‌هدف‌دتمClear() محتوياتDataSet نمايد را پاك مي.

Clone() ، ارتبفاط بفين (DataTable)از يبيل سفاختار جفداول DataSetساختارهاي موجود در

.گيرد نمي كپي موجود در جداول هاي از داده. كند مي را كپي ها محدوديتو جداولCopy() جود در جداول هاي مو ساختار و دادهDataSet گيرد را كپي مي.

AcceptChanges() متفد بفار اجفراي از زمفان بفار شفدن يفا آخفرين DataSetتمام تغييرات انجام شفده در

AcceptChanges ياRejectChanges كند تاكنون را ثبت مي. GetChanges() انجام شده در تغييرات از تمام كپي يكDataSet گرداند برمياز زمان بار شدن.

HasChanges() دهد آيا تغييراتي مانند حذف، اضافه و ويرايش سطرها گرداند كه نشان مي مقداري را برمي

.انجام شده است يا خير DataSetدر ( ركوردها)GetChildRelations() گرداند در ارتباط بين دو جدول فيلد ارتباط جدول فرزند را برمي. GetParentRelations() گرداند را برمي پدردر ارتباط بين دو جدول فيلد ارتباط جدول. Merge() اين متد دوDataSet كند را با هم ادغام مي.

RejectChanges() AcceptChangesرا از آخففرين زمففان اجففراي DataSetتغييففرات انجففام شففده در

.نمايد مي( خنثي)گرد عقبReadXML() فايلXML را خوانده درDataSet دهد يرار مي. ReadXMLSchema() يك ساختار شِماXML خواند و در را ميDataSet نويسد مي. WriteXML() هاي موجود در دادهDataSet را در فايلXML نويسد مي. WriteXMLSchema() ساختارDataSet را به عنوان يك شِمايXML نويسد مي. Reset() اين متدDataSet گرداند اش برمي ليهرا به حالت او.

www.kolbedanesh.com

Page 37: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

.DataSetبرای‌اضافه‌کردن‌جدول‌به‌‌Addمتدهای‌‌‌‌‌‌3-3جدول‌

‌هدف‌متد

Tables.Add()

DataTable جديدي در داخلDataSet با نامTableN كند كفه ايجاد ميN شود و به طور خودكار بفا شروع مي 1يك عدد صحيحي است كه از

.شود ، اضافه ميDataSetافزودن هر جدول به

Table.Add(TableName) DataTable جديدي با نامTableName ايجاد كرده بهDataSet ا ضفافه

.كند مي

Table.Add(DataTable) DataTable مشخص شده را بهDataSet كند اضافه مي.

Tables.AddRange(TableArray) DataTable هايي را كه درTableArray يرار دارنفد بفهDataSet اضفافه

.كند مي

DataSetپر کردن . 1-1-4

در فصفول بعفد DataAdapterبفا كفالس )پر كنيفد DataAdapterتوانيد با كالس را مي DataSetهاي داده :براي اين منوور بايد مراحل زير را انجام دهيد(. بيشتر آشنا خواهيد شد

:شيء اتصال به بانك را تعريف كنيد .0

String connStr = “رشته اتصال”; SqlConnection conn = new SqlConnection(connStr);

ها را از بانك اطالعات بازيابي كفرده، در خواهيد داده ايي را تعريف كنيد كه ميSQLدستور يا دستورات .2 DataSet (:مانند دستور زير. )يرار دهد

String SQL = “SELECT * FROM Chek”;

:تعريف كنيد SqlDataAdapter اي از كالس نمونه .3

SqlDataAdapter da = new SqlDataAdapter (SQL , Conn);

:را ايجاد كنيد DataSetشيء .4

DataSet ds = new DataSet();

اين دستور به صورت . را پر كنيد DataSetاجرا نماييد تا SqlDataAdapterرا روي نمونه شيء Fillمتد .5 :درو زير به كار مي

da.Fill(ds, “Chek”);

با چندین جدول DataSetپر کردن . 2-1-4

كفالس . اسفتفاده كنيفد DataAdapterتوانيفد از كفالس مفي DataSetطور بيان گرديد، براي پر كفردن همان DataAdapter داراي كالسي به نامTableMappings توانيد است كه با استفاده از آن ميDataSet را با چنفدين

:دستورات زير را ببينيد. وجو پر كنيد ل يا نتيجه پرسجدو

www.kolbedanesh.com

Page 38: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

String SQL = “SELECT * FROM Ostan;”; SQL += “SELECT * FROM City;”;

SQL += “SELECT * FROM Bank:”;

SqlDataAdapter da = new SqlDataAdapter(SQL,conn);

da.TableMappings.Add(“Table” , “Ostan”);

da.TableMappings.Add(“Table1”, “City”);

da.TableMappings.Add(“Table2” , “Bank”);

DataSet ds = new DataSet();

da.Fill(ds);

.كنند اضافه مي DataSetرا به Bankو Ostan ،Cityاين دستورات، جدول

DataRowکالس . 2-2-4

سفطري از آن جفدول را DataRowبيان گرديد كه هر جدول از چندين سطر تشكيل شده است و هر شيء

توان به سطر مي 31با استفاده از نام و انديس. ها استDataRowاي از بنابراين، هر جدول مجموعه. دهد نشان مي

توان محتويات فيلد خاصي را بازيفابي يفا دسفتكاري ركورد خاصي دست يافت و با استفاده از انديس ستون مي

جدول اضافه كرد، سطرهاي موجفود جفدول را حفذف و ويفرايش توان سطر جديدي به با اين شيء مي. نمود

.اند آمده 4-16و 4-15در جدول DataRowخواص و متدهاي شيء . نمود

.DataRowخواص‌‌‌‌‌‌3-16جدول‌

‌هدف‌خاصیتHasError كند آيا خطاي در سطر وجود دارد يا خير تعيين مي.

Item 4-17در جدول Itemخواص مربوط به . كند خاصي را تعيين مي( فيلد)هاي ستون داده

.آمده است

ItemArray دهد يا برعكس رايه يرار ميآهاي سطر را در يك كليه مقادير ستون.

RowError كند توصيف خطاي سفارشي براي يك سطر را مشخص مي.

RowState حالت يك سطر(DataRowState )كند را مشخص مي.

Table اين سطر كند كه جدولي را تعيين مي(DataRow )در آن يرار دارد.

‌.DataRowمتدهای‌‌‌‌‌‌3-17جدول‌

‌هدف‌متد

30- Index

www.kolbedanesh.com

Page 39: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

AcceptChanges تمام تغييرات انجام شده در يكDataRow كند مي( اعمال)را تثبيت.

BeginEdit كند يك عمليات ويرايش را شروع مي.

CancelEdit كند ات ويرايش را كنسل مييك عملي.

Delete كند سطري را حذف مي(گذاري كرده تا عالمتDataSet به هنگام گردد.)

EndEdit دهد يك عمليات ويرايش را با اعمال تغييرات خاتمه مي.

GetChildRows فرزند مربوط به جدولتمام سطرهايDataRow خواند را مي.

GetParentRows پدر مربوط به يك جدولتمام سطرهايDataRow خواند را مي.

HasVersion كند كه آيا يك نسخه مشخص شده از تعيين ميDataRow وجود دارد يا خير.

IsNull كند كه آيا ستون مشخصي تعيين ميNull است يا خير.

RejectChanges تمام تغييرات انجام شده درDataRow كند گرد مي را عقب.

SetParentRow پدر مربوط به يك رسطDataRow كند را تعيين مي.

ClearErrors كند خطاهاي سطر را پاك مي.

GetColumnError خواند خطاهاي ستون را مي.

.DataRow Itemخواص‌‌‌‌‌‌3-18جدول‌

‌هدف‌خاصیتItem(columnName) گرداند كه نام ستون آن با مقدار ستوني را برميcolumnName مشخص شده است.

Item(dataColumn) مقدار مربوط بهdataColumn گرداند مشخص شده را برمي.

Item(columnIndex)

مشفخص شفده columnIndexگرداند كه شماره ستون توسط مقدار ستوني را برمياولففين سففتون داراي ،يعنففي .شففود از صفففر شففروع مففي columnIndex)اسففت

columnIndex صفر است.)

Item(columnName, rowVersion)

ColumnNameگرداند كه خاصفيت اي را برميrowVersionمقدار مربوط به نسخه .مشخص شده است columnNameآن با رشته

Item(dataColumn, rowVersion)

مشخص dataColumnگرداند كه با اي را برميrowVersionمقدار مربوط به نسخه .شده است

Item(columnIndex, rowVersion)

columnIndexگردارند كفه سفتون آن توسفط اي را برميrowVersionمقدار نسخه .مشخص شده باشد

4-1مثال :دهد اي كه اعمال زير را انجام مي برنامه

.دهد نمايش مي ListBoxرا در tblUserمقادير جدول DataRowبا استفاده از كالس .0 .دهد را نمايش مي tblUserجدول نوع هر فيلد DataColumnبا استفاده از كالس .2

.كند را بريرار مي Ostanو Cityارتباط بين جدول Relationsبا استفاده از كلكسيون .3

www.kolbedanesh.com

Page 40: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

.دهد نمايش مي DataGridViewرا در يك ComboBoxاطالعات فيلدهاي رشته، تصوير و .4هاي مختلف آن را در نسخهو اطالعات dataGridView1را در Cityهاي اصلي ركوردهاي جدول نسخه .5

dataGridView2 دهد نمايش مي. .دهد يرار مي App.Configرشته اتصال را در فايل .6

‌مراحل‌طراحی‌و‌اجرا‌.ایجاد‌کنید‌Fieldپروژه‌جدیدی‌به‌نام‌ .0این‌کنترل‌برای‌نمایش‌مقادیر‌جدول،‌لیسوت‌فیلودها‌و‌‌‌.‌دیبه‌فرم‌اضافه‌کن‌ListBoxیک‌کنترل‌ .2

‌.رود‌می‌نوع‌آنها‌به‌کاربرای‌انتخاب‌‌ComboBoxکنترل‌.‌به‌فرم‌اضافه‌کنید‌ComboBoxو‌یک‌کنترل‌‌Labelیک‌کنترل‌ .3

‌.شود‌نمایش‌داده‌شوند،‌استفاده‌می‌dataGridView2که‌باید‌در‌‌Cityهای‌مختلف‌جدول‌‌نسخه‌کنترل‌اول،‌برای‌نمایش‌اطالعات‌اصلی‌جداول‌و.‌به‌فرم‌اضافه‌کنید‌DataGridViewدو‌کنترل‌ .4

‌.رود‌به‌کار‌می‌Cityهای‌مختلف‌جدول‌‌کنترل‌دوم،‌برای‌نمایش‌نسخهبوه‌کوار‌‌‌‌یها‌برای‌انجام‌عمل‌خاص‌هر‌یک‌از‌این‌کنترل.‌به‌فرم‌اضافه‌کنید‌Buttonکنترل‌پنچ‌ .5

‌.دنرو‌می

بوورای‌ایوون‌منظووور‌گزینووه،‌‌.‌را‌بووه‌پووروژه‌اضووافه‌کنیوود‌‌‌System.Configurationارجوواع‌ .6

Project/Add Reference…را‌اجرا‌کنید‌تا‌پنجره‌‌Add Reference(.3-8شکل)ظاهر‌شود‌‌‌

www.kolbedanesh.com

Page 41: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

Add Referenceپنجره 4-2شكل

را‌کلیک‌کنید‌تا‌شوکل‌زیور‌‌‌‌OKدکمه‌‌،را‌انتخاب‌کرده‌System.Configurationدر‌این‌گزینه‌ .۶ (:Solution Explorerنجره‌پ)ظاهر‌شود‌

.به پروهه اضافه گرديد System.Configurationجاع بينيد، ار طور كه در اين شكل مي همانبورای‌‌.‌را‌به‌پروژه‌اضافه‌کنید‌تا‌بتوانید،‌رشته‌اتصال‌را‌در‌آن‌تعریف‌کنیود‌‌App.Configفایل‌ .8

‌:این‌منظور،‌مراحل‌زیر‌را‌اجرا‌کنید (.4-3شكل)ظاهر شود Add New Itemرا اجرا كنيد تا پنجره Project/ Add New Items گزينه

www.kolbedanesh.com

Page 42: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

Add New Itemپنجره 4-3كلش

را كليك كنيد تفا Addرا انتخاب و دكمه Application Configuration File، گزينه Templatesدر بخش (:شكل زير)به پروهه اضافه شود App.Configفايل

:كليك مضاعف كرده، دستورات آن را به صورت زير تغيير دهيد( App.Config)بر روي اين فايل

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<connectionStrings>

<add name="Chek"

connectionString="server=.\sqlexpress;database=Chek;Integrated Security=SSPI" /> </connectionStrings>

</configuration>

كند كه بفر روي كفامپيوتر را بريرار مي Chekاتصال به بانك )كنند رشته اتصال را تعريف مياين دستورات (.فعلي يرار دارد

‌:فرم‌برنامه‌برگردید‌و‌دستورات‌زیر‌را‌به‌آن‌اضافه‌کنید‌usingبه‌بخش‌ .9

using System.Data.SqlClient; using System.Configuration;

www.kolbedanesh.com

Page 43: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

اضافه شده است و دسفتور دوم، بفراي بفه كفارگيري SQL Serverهاي السدستور اول، براي استفاده از ك .اضافه گرديد Configurationهاي كالس

را‌بوه‌صوورت‌زیور‌‌‌‌‌Form1_Loadدستورات‌رویداد‌‌،ناحیه‌خالی‌فرم‌را‌کلیک‌مضاعف‌کرده .01‌:تغییر‌دهید

private void Form1_Load(object sender, EventArgs e)

{

listBox1.MultiColumn = true;

label1.Text = "فیلتر کردن";

button1.Text = " نمايش محتوي فیلدها";

button2.Text = " نمايش لیست فیلدها";

button3.Text = " ايجاد ارتباط ";

button4.Text = " نمايش انواع فیلدها";

button5.Text = " فیلتر سازي براساس نسخه"; comboBox1.Items.Add("Added");

comboBox1.Items.Add("CurrentRows");

comboBox1.Items.Add("Deleted");

comboBox1.Items.Add("ModifiedCurrent");

comboBox1.Items.Add("ModifiedOriginal");

comboBox1.Items.Add("None");

comboBox1.Items.Add("OriginalRows");

comboBox1.Items.Add("Unchanged");

}

هاي روي ففرم پنج دستور بعدي، عنوان دكمه. گيرد را چند ستوني در نور مي ListBox1دستور اول، كنترل اضافه comboBox1هاي مختلف ركوردها را به هاي مربوط به نسخه كنند و دستورات بعدي، حالت را تعيين مي

.كنند ميرا‌بوه‌صوورت‌زیور‌تغییور‌‌‌‌‌‌آن‌Clickرا‌کلیک‌مضاعف‌کرده،‌دستورات‌رویداد‌‌button1دکمه‌ .00

‌:دهید

private void button1_Click(object sender, EventArgs e)

{

using (SqlConnection conn = new SqlConnection (ConfigurationManager.ConnectionStrings["Chek"]. ConnectionString)) {

listBox1.Items.Clear();

// query

string sql = @"select * from tblUser";

try

{ conn.Open();

SqlDataAdapter da = new SqlDataAdapter(sql, conn);

DataSet ds = new DataSet();

da.Fill(ds, "tblUser");

DataTable dt = ds.Tables["tblUser"];

// display data

foreach (DataRow row in dt.Rows)

{

foreach (DataColumn col in dt.Columns)

www.kolbedanesh.com

Page 44: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

listBox1.Items.Add(col.ColumnName + ":" + row[col]);

listBox1.Items.Add("\n");

}

}

catch (Exception e1)

{

MessageBox.Show("Error: " + e1.ToString());

}

finally

{

conn.Close();

}

}

}

بفه نفام SqlConnectionخوانده و يك نمونه از كفالس App.Config، رشته اتصال را از فايل usingدستور conn دستورات داخل بالك . نمايد ايجاد ميtry ابتدا اتصال ،conn را باز كرده، اطالعات جفدولtblUser را دركند و اطالعفات ايجاد مي dsبه نام DataSetدهد و يك شيء از نوع يرار مي SqlDataAdapterاز نوع daشيء

ايجاد كفرده، اطالعفات dtيك جدول به نام DataTableدر ادامه با كالس . كند پر مي dsرا در tb1Userجدول جفدول بفا خاصفيت ركوردهفاي foreachدر پايان، حلقفه . دهد است، در آن يرار مي dsكه در tblUserجدول

dt.Rows هاي جدول را با و ستونdt.Columns دهد نمايش مي. آن‌را‌به‌صوورت‌زیور‌تغییور‌‌‌‌‌Clickدستورات‌رویداد‌‌،را‌کلیک‌مضاعف‌کرده‌button2دکمه‌‌ .02

‌:دهید

private void button2_Click(object sender, EventArgs e)

{

string sql= @"select * from tblUser";

using (SqlConnection conn = new SqlConnection (ConfigurationManager.ConnectionStrings["Chek"]. ConnectionString)) { try { conn.Open();

SqlDataAdapter da = new SqlDataAdapter(sql, conn);

SqlCommand cmd = new SqlCommand(sql, conn);

SqlDataReader rdr = cmd.ExecuteReader();

DataTable schema = rdr.GetSchemaTable();

listBox1.Items.Clear();

foreach (DataRow row in schema.Rows) { foreach (DataColumn col in schema.Columns) {

listBox1.Items.Add(col.ColumnName +" :" + row[col]); listBox1.Items.Add("");

}

listBox1.Items.Add("\n");

rdr.Close();

}

}

catch (Exception e1)

{

MessageBox.Show("Error Occurred: " + e1.ToString());

}

finally

www.kolbedanesh.com

Page 45: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

{

conn.Close();

}

}

}

ايجفاد connبفه نفام SqlConnectionيفك شفيء از نفوع App.Configاين دستورات، ابتدا با استفاده فايل اي از نففوع شفي rdrدر ( ()ExecuteReaderبففا متفد )را خوانفده tblUserسفپس، اطالعففات جفدول . كننفد مفي

SqlDataReader در ادامفه، بفا فراخفواني متفد . دهند باشد، يرار مي ميGetSchemaTable() سفاختار جفدول را ،بففراي هففر سففطر foreachسففپس، در حلقففه . دهففد يففرار مففي DataTableاز نففوع Schemaخوانففده، در شففيء

(schema.Rows ) كه خاصيتColumns كنند، به آنها خواص فيلدها را نگهداري ميlistBox1 كننفد اضفافه مفي (.كنند اضافه مي listBox1يعني، نام فيلدها و خواص آنها را در )

آن‌را‌به‌صوورت‌زیور‌تغییور‌‌‌‌‌Clickدستورات‌رویداد‌‌،را‌کلیک‌مضاعف‌کرده‌button3دکمه‌‌ .03‌.دهید

private void button3_Click(object sender, EventArgs e)

{

string City = "SELECT * FROM City";

string Ostan = "SELECT * FROM Ostan";

dataGridView1.Columns.Clear();

dataGridView1.DataBindings.Clear();

using (SqlConnection con = new SqlConnection (ConfigurationManager.ConnectionStrings["Chek"]. ConnectionString)) {

DataSet ds = new DataSet();

SqlDataAdapter da = new SqlDataAdapter(Ostan, con);

da.Fill(ds, "Ostan");

da = new SqlDataAdapter(City, con);

da.Fill(ds, "City");

ds.Relations.Add("OstanCity",

ds.Tables["Ostan"].Columns["OstanCode"],

ds.Tables["City"].Columns["OstanCode"]);

dataGridView1.DataBindings.Clear();

dataGridView1.AutoGenerateColumns = true;

dataGridView1.DataSource = ds.Tables["City"];

}

}

كفه از نفوع dsرا در Ostanو Cityمتصل شده اطالعفات جفداول Chekبه بانك اطالعات . اين دستورات

DataSet كنند و با كالس هستند، پر ميRelations كننفد و اطالعفات مفي ارتباط بين ايفن دو جفدول را بريفرار

.دهند نمايش مي dataGridView1را در كنترل Cityجدول

آن‌را‌به‌صوورت‌زیور‌تغییور‌‌‌‌‌Clickرا‌کلیک‌مضاعف‌کرده،‌دستورات‌رویداد‌‌button4دکمه‌‌ .04

:دهید

www.kolbedanesh.com

Page 46: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

private void button4_Click(object sender, EventArgs e)

{

string select = "SELECT FUser, LUser, Photo, IsNull(Access,0) as AccessTO FROM tblUser"; using (SqlConnection conn = new SqlConnection (ConfigurationManager.ConnectionStrings["Chek"].ConnectionString)) {

SqlDataAdapter da = new SqlDataAdapter(select, conn);

DataSet ds = new DataSet();

da.Fill(ds, "tblUser");

select = "SELECT * FROM Access ";

da = new SqlDataAdapter(select, conn);

da.Fill(ds, "Access");

// Construct the columns in the grid view

SetupColumns(ds);

dataGridView1.AutoGenerateColumns = false;

dataGridView1.DataSource = ds.Tables["tblUser"];

dataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode. AllCells); }

}

را بففر روي ComboBox، تصففوير و Textاز يبيففل فيلففدهاي tblUserايففن رويففداد، اطالعففات جففدول dataGridView براي اين منوور، اطالعات جفدول . دهد نمايش ميtblUser و اطالعفات جفدولAccess را در

هففاي كنتففرل سففتون SetupColumns(ds)سففپس، بففا فراخففواني تففابع . كنففد پففر مففي DataSetاز نففوع dsشففيء dataGridView1 كنفد و در پايفان، اطالعفات جفدول را سفارشي مفيtblUser را درdataGridView1 ايش نمف

.دهد مي‌:را‌به‌صورت‌زیر‌تعریف‌کنید‌()SetupColumnsتابع‌‌ .05

private void SetupColumns(DataSet ds)

{

dataGridView1.Columns.Clear();

dataGridView1.DataBindings.Clear();

// add a string column

DataGridViewTextBoxColumn forenameColumn = new DataGridViewTextBoxColumn();

forenameColumn.DataPropertyName = "FUser";

forenameColumn.HeaderText = "نام کاربر"; forenameColumn.ValueType = typeof(string);

forenameColumn.Frozen = true;

dataGridView1.DataBindings.Clear();

dataGridView1.Columns.Add(forenameColumn);

// add a string column

DataGridViewTextBoxColumn surnameColumn = new DataGridViewTextBoxColumn();

surnameColumn.DataPropertyName = "LUser";

surnameColumn.HeaderText = "نام خانوادگي کاربر"; surnameColumn.Frozen = true;

surnameColumn.ValueType = typeof(string);

dataGridView1.Columns.Add(surnameColumn);

// add a Image column

DataGridViewImageColumn photoColumn = new DataGridViewImageColumn();

photoColumn.DataPropertyName = "Photo";

photoColumn.Width = 200;

www.kolbedanesh.com

Page 47: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

photoColumn.HeaderText = "تصوير"; photoColumn.ReadOnly = true;

photoColumn.ImageLayout = DataGridViewImageCellLayout.Normal;

dataGridView1.Columns.Add(photoColumn);

// add a ComboBox column

DataGridViewComboBoxColumn AccessColumn = new DataGridViewComboBoxColumn();

AccessColumn.HeaderText = "سطح دسترسي"; AccessColumn.DataSource = ds.Tables["Access"];

AccessColumn.DisplayMember = "AccessName";

AccessColumn.ValueMember = "Access";

AccessColumn.DataPropertyName = "Access";

dataGridView1.Columns.Add(AccessColumn);

}

و tblUserرا به عنوان ورودي گرفته كفه داراي اطالعفات دو جفدول DataSetاين تابع، يك پارامتر از نوع

Access در بخش اول و دوم، فيلدهاي .استFuser وLuser از نفوعString را بفه دو سفتون dataGridView1

كند و در اضافه مي dataGridView1از نوع تصاوير را به ستون بعدي Photoدر بخش سوم، فيلد . كند اضافه مي

dataGridView1به يك سفتون ComboBoxرا به صورت ( نام دسترسي) Accessبخش آخر، اطالعات جدول

.ها را ببيند و يكي را انتخاب كند تواند انواع دسترسي در اين ستون كاربر مي. نمايد اضافه مي

‌یور‌آن‌را‌به‌صوورت‌زیور‌تغی‌‌‌Clickدستورات‌رویداد‌‌،را‌کلیک‌مضاعف‌کرده‌button5دکمه‌‌ .06

‌:دهید

private void button5_Click(object sender, EventArgs e) {

dataGridView1.Columns.Clear();

dataGridView1.DataBindings.Clear();

using (SqlConnection conn = new SqlConnection (ConfigurationManager.ConnectionStrings["Chek"].ConnectionString)) {

string select = "SELECT * FROM City";

SqlDataAdapter da = new SqlDataAdapter(select, conn);

DataSet ds = new DataSet();

da.Fill(ds, "City");

dataGridView1.AutoGenerateColumns = true;

dataGridView1.DataSource = ds.Tables["City"];

DataView dv = new DataView(ds.Tables["City"]);

dataGridView2.AutoGenerateColumns = true;

dataGridView2.DataSource = dv;

comboBox1.SelectedIndex = 6;

comboBox1.Enabled = true;

}

}

ايجاد كرده، سفپس اطالعفات مربفوط بفه نسفخه SqlConnectionاز نوع connاين رويداد، ابتدا يك شيء

Cityهاي جفدول زيرا، اطالعات نسخه. دهد نمايش مي dataGridView2را در كنترل Cityانتخاب شده جدول

(.در فصل بعدي بيشتر آشنا خواهيد شد DataViewبا كالس )گيرد يرار مي DataViewع از نو dvدر شيء

www.kolbedanesh.com

Page 48: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

‌SelectedIndexChangedدستورات‌رویوداد‌‌‌،کلیک‌مضاعف‌کرده‌comboBox1بر‌روی‌کنترل‌‌ .07

:آن‌را‌به‌صورت‌زیر‌تغییر‌دهید

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

DataViewRowState state;

switch (comboBox1.Text)

{

case "Added":

state = DataViewRowState.Added;

break;

case "CurrentRows":

state = DataViewRowState.CurrentRows;

break;

case "Deleted":

state = DataViewRowState.Deleted;

break;

case "ModifiedCurrent":

state = DataViewRowState.ModifiedCurrent;

break;

case "ModifiedOriginal":

state = DataViewRowState.ModifiedOriginal;

break;

case "None":

state = DataViewRowState.None;

break;

case "OriginalRows":

state = DataViewRowState.OriginalRows;

break;

case "Unchanged":

state = DataViewRowState.Unchanged;

break;

default:

state = DataViewRowState.OriginalRows;

break;

}

try

{

((DataView)dataGridView2.DataSource).RowStateFilter = state;

}

catch (Exception ex)

{

MessageBox.Show(ex.ToString());

}

}

سپس، بفا توجفه . كنند تعريف مي DataViewRowStateاز نوع stateاين دستورات، ابتدا يك متغيري به نام ، DataViewRowState.Addedرا يكفي مقفادير stateمقفدار متغيفر comboBox1كنترل Textيت به مقدار خاص

DataViewRowState.CurrentRows ،DataViewRowState.ModifiedOriginal در . گيرنفد و غيره در نوفر مفييرار stateرابر را ب dataGridView2.DataSourceمربوط به كنترل RowStateFilter، خاصيت tryادامه، در بالك

.نمايش داده شود Cityدهند تا نسخه خواسته شده جدول مي

www.kolbedanesh.com

Page 49: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

نموایش‌‌»در‌این‌فرم‌دکمه‌.‌شود‌اکنون‌فرم‌اجرای‌برنامه‌ظاهر‌می.‌برنامه‌را‌ذخیره‌و‌اجرا‌کنید‌ .۸۱ .بينيفد مقفدار آن را مفي و در اين شكل، نام فيلد .ظاهر‌گردد‌3-3را‌کلیک‌کنید‌تا‌شکل«‌محتوی‌فیلدها

دكمه . ببينيد listBox1را كليك كنيد تا ليست فيلدها و نوع آنها را در «دکمه‌نمایش‌لیست‌فیلدها» اكنون، dataGridView2اكنفون در كنتفرل . ظاهر گفردد 4-5را كليك كنيد تا شكل «فیلترسازی‌براساس‌نسخه»

مانند شفكل زيفر ظفاهر هاي آن را كليك نموده تا گزينه comboBox1شهر بابل را به بابلسر تغيير دهيد و :شود

.tblUserنمايش محتوي فيلدهاي جدول 4-4شكل

همان طور كه در اين شفكل . ظاهر شود 4-6را انتخاب كنيد تا شكل ModifiedCurrentدر اين شكل گزينه .فقط شهر بابلسر نمايش داده شده است dataGridView1بينيد، در مي

اي را بفر روي ComboBoxرا كليفك كنيفد تفا فيلفدهاي تصفوير و « هانموایش‌انوواع‌فیلود‌‌‌»اكنون دكمه dataGridView1 فيلد سطح دسترسي را كليك كنيد تا شكل زير ظاهر شود. ببينيد.

www.kolbedanesh.com

Page 50: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

Cityنمايش اطالعات جدول 4-5شكل

.انجام شدها نسخه تغييرات ب Cityنمايش اطالعات تغيير يافته جدول 4-6شكل

www.kolbedanesh.com

Page 51: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

فصـل

7 و SQL Serverاشیای پیشرفته بخشی از ADO.NET

هاي يبل با بانك اطالعات آشنا شديم و توانستيم در بانك اطالعات جدول ايجاد كرده، ركوردهايي در فصل

در اين فصل . اضافه نماييم و ركوردهاي موجود را ويرايش، حذف يا بازيابي كنيم ADO.NETبه آنها از طريق بپردازيم و چگونگي 33هاي ذخيره شده و رويه 32، توابع31خواهيم به اشياي ديگر بانك اطالعات از يبيل ديدها مي

در ضمن در اين فصل با تعريف متغيرها، مقداردهي به آنهفا و . ببينيم ADO.NETچگونگي استفاده از آنها را در .شدآشنا خواهيم SQL Serverساختارهاي تصميم و تكرار در

دید. 1-7

، براي بازيابي اطالعات از بانك اطالعفات SELECTهاي يبل مشاهده كرديد، دستور طور كه در فصل همان. شفود يكي از معايب اين دستور اين است كه در بانك اطالعات به عنوان يك شيء ذخيفره نمفي . رود به كار مي

ييد بايد آن را چندين بار تايپ نماييفد و سفپس را چندين بار اجرا نما SELECTيعني، اگر بخواهيد يك دستور . توانيد از ديد اسفتفاده كنيفد براي رفع اين مشكل، مي. اين امر موجب صرف ويت زيادي خواهد شد. اجرا كنيد

.گردد چون، ديد به عنوان يك شيء در بانك اطالعات ذخيره مي

ایجاد دید. 1-1-7

نمايد تا كاربران بلكه امكانات امنيتي را براي كاربران فراهم ميشود، ديد نه تنها در بانك اطالعات ذخيره ميهفاي بفا يالفب 34هفاي مجفازي ديد، جدول. بتوانند به فيلدها و ركوردهاي خاص خودشان دستيابي داشته باشند

ففرض كنيفد ر فيس . شود هاي مختلف نگهداري مي ، چك مربوط به بانكChekدر جدول . كند جديد ايجاد ميهفا را هاي مربفوط بفه كفل بانفك در حالت عادي چك. هاي مربوط به بانك خودش را ببيند د چكبانك بخواهكفه داراي شفرط خاصفي اسفت، اطالعفات و SELECTبنابراين، ر يس بانك بايفد بفا دسفتور . كند مشاهده مي

ات زياد بخواهد به دفع)اگر تعداد دفعات اجراي اين دستور زياد باشد . ركوردهاي بانك خودش را بازيابي نمايدبراي رفع اين مشفكل . بر نيز خواهد بود ، تايپ دستور نه تنها كسل كننده است، بلكه زمان(اين كار را انجام دهد

ديدي ايجاد كنيد تا اين كفاربران فقفط بتواننفد ( ها مانند رواساي بانك)توانيد براي هر يك از كاربران نامبرده مياز طرف ديگر، چون در ديفد كفاربران بفه طفور مسفتقيم بفه جفداول بانفك . اطالعات خودشان را بازيابي كنند

بفه صفورت زيفر CREATE VIEWبراي ايجاد ديد از دستور . يابد اطالعات دسترسي ندارند، امنيت افزايش مي :شود استفاده مي

CREATE VIEW view_name(fields_list) As SQL دستور

31- Views 2- Functions 3- Stored Procpdures 4- Virtual tables

www.kolbedanesh.com

Page 52: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

، ليست فيلدهاي ديد را fields_listخواهيد ايجاد كنيد، ت كه مي، نام ديدي اسview_nameدر اين ساختار، :به عنوان مثال، دستور زير را ببينيد. كند تعيين مي

CREATE VIEW Chek1 As SELECT * FROM Chek WHERE BankCode = '87'

. كند يابي ميرا باز '87'هاي بانك با كد كند كه چك ايجاد مي Chek1اين دستور، ديدي به نام :را ببيند '87'هاي بانك با كد تواند با اجراي دستور زير چك اكنون كاربر مي

SELECT * FROM Chek1

های ذخیره شده رویه. 5-7

هستند كه با هم در يفك مجموعفه يفرار گرفتفه كامپايفل SQLهاي ذخيره شده، تعدادي از دستورات رويه

هاي ذخيره شده مزاياي متعددي دارند كه برخي از آنهفا رويه. باشند اجرا مي يابل SQLشوند و با يك دستور مي

:اند از عبارت

هاي ذخيره شده به صورت كامپايل شفده در زيرا، رويه.‌باالست‌های‌ذخیره‌شده‌سرعت‌اجرای‌رویه.1

هفد شفد و از تر انجفام خوا بنابراين، دستيابي به آنها سريع. شوند نگهداري مي بانك اطالعات‌35حافوه نهان

پفس، سفرعت اجفراي آنهفا . اند، در هنگام اجرا نياز به كامپايل شدن ندارنفد طرف ديگر، چون كامپايل شده

.يابد افزايش مي

هفاي ذخيفره زيرا، يك بار رويه. سازند‌می‌پذیر‌امکان را‌47نویسی‌ماژولی‌های‌ذخیره‌شده‌برنامه‌رویه.8

.نماييد تا اجرا شوند آنها را فراخواني ميكنيد و چند بار نويسيد، كامپايل مي شده را مي

هفاي ذخيفره شفده از زيرا، ممكن است رويفه .‌دهند‌شده‌ترافیک‌شبکه‌را‌کاهش‌می‌های‌ذخیره‌‌رویه.4وجفو بفراي چند خط را به عنوان پرس 37گيرنده در حالت عادي، ويتي سرويس .چندين سطر تشكيل شوند

( كفاربران )ها گيرنده در حالتي كه تعداد سرويس. يابد يش ميكند، ترافيك شبكه افزا دهنده ارسال مي سرويسهاي ذخيره استفاده ولي، اگر از رويه. دهد در محيط شبكه زياد باشد، اين موضوع بيشتر خودش را نشان مي

چون بدنه رويه ذخيره شده . كنيد، جهت اجرا فقط كافي يك خط را بفرستيد تا رويه ذخيره شده اجرا گردد .يرار دارد 38دهنده يسدر سمت سرو

.اجرا‌نمود‌SQL Serverاندازی‌‌توان‌به‌طور‌خودکار‌پس‌از‌راه‌های‌ذخیره‌شده‌را‌می‌رویه.3

.شوند ذخيره مي sys.Commentsو دستورات آن در جدول sys.objectsهاي ذخيره شده در جدول نام رويه

های ذخیره شده ایجاد رویه. 1-5-7

توانيفد بفا دسفتور شفوند كفه مفي يك شيء در بانفك اطالعفات ذخيفره مفي هاي ذخيره شده به عنوان رويهCREATE PROCEDURE رود اين دستور به صورت زير به كار مي. آنها را ايجاد كنيد:

CREATE PROC [ EDURE ] procedure_name [ ; number ]

35- Cache Memory 2- Modular Programming

37- Client 2- Server

www.kolbedanesh.com

Page 53: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

[ { @parameter data_type }

VARYING ] [ = default ] [ OUTPUT ]

] [ ,...n ]

[ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]

[ FOR REPLICATION ]

AS sql_statement [ ...n ]

:به عنوان مثال، دستور زير ار ببينيد. اند آمده 7-1پارامترهاي اين دستور در جدول

USE [Chek] GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER OFF

GO

CREATE PROCEDURE [dbo].[delete_Shobe]

(@ShobeCodeVarchar(6),

@strOut varchar(1) output)

AS

if @ShobeCode in (select ShobeCode from Bank)

set @strOut='1' -- شماره شعبه در بانک استفاده گرديد else if @ShobeCode not in (select ShobeCode from Shobe)

set @strOut='2' -- شعبه وجود نداردشماره شعبه در else

begin

DELETE [Shobe] WHERE ( [ShobeCode] = @ShobeCode)

set @strOut='0' -- حذف گرديدشعبه end

را از ورودي ShobeCode@كنفد كفه پفارامتر را ايجفاد مفي delete_Shobeشده اين دستورات، رويه ذخيرهاين رويه ذخيره شده، اگر كد شعبه در بانفك وجفود . گرداند را به صورت خروجي برمي Strout@پارامتر گرفته

وگرنه، شعبه را '2'برابر Strout@وگرنه، اگر كد شعبه وجود نداشته باشد، '1' را برابر با Strout@داشته باشد، :ر زير را در نور بگيريداكنون دستو. خواهد شد '0'برابر Strout@كند و مقدار حذف مي

USE [Chek] GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER OFF

GO

CREATE PROCEDURE [dbo].[insert_Shobe]

(@ShobeCodeVarchar(6)

@ShobeNameVarchar(30),

@strOut varchar(1) output)

AS

if @ShobeCode in (select ShobeCode from Shobe)

set @strOut='1' -- شعبه وجود داردشماره شعبه در else if @ShobeName not in (select ShobeName from Shobe)

set @strOut='2' – شعبه وجود داردشعبه در نام else

begin

INSERT INTO [Shobe](ShobeCode, ShobeName) VALUES (@ShobeCode, @ShobeName)

set @strOut='0' – گرديد شعبه اضافه

www.kolbedanesh.com

Page 54: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

end

‌.CREATE PROCEDUREپارامترهای‌دستور‌‌‌‌‌8-1جدول‌‌هدف‌پارامتر

Procedure_name شود كند كه ايجاد مي اي را تعيين مي نام رويه ذخيره شده.

number

توانيد به رويه ذخيره شده تخصيص دهيفد كند كه مي اي را مشخص مي شمارهگيرند با اين شفماره ذخيره شده كه در يك گروه يرار ميهاي تا برخي از رويه

.بتوانيد فراخواني كنيد

@Parameter توانيفد مقفادير را از طريفق آنهفا بفراي رويفه كنند كه مي پارامترهايي را تعيين مي

.ذخيره شده ارسال كنيدdata_type كند نوع هر يك از پارامترهاي رويه ذخيره شده را تعيين مي. VARYING كند مجموعه نتايج را به عنوان پارامتر خروجي مشخص مي.

default

اگفر رويفه ذخيفره . كنفد فرض پارامتر رويه ذخيره شده را تعيين مي مقدار پيششده را بدون مقدار فراخواني كنيد، اين مقدار براي پارامتر رويه ذخيره شده در

.شود نور گرفته ميOUTPUT گيرد نور مي نوع پارامتر را خروجي در. WITH RECOMPILE گردد با هر فراخواني رويه ذخيره شده دوباره كامپايل مي. WITH ENCRYPTION كند تا يابل بازيابي نباشد دستورات رويه ذخيره شده را رمزگذاري مي.

FOR REPLICATION گيرنفده يابفل كند كه توسط سفرويس رويه ذخيره شده را براي تكثير ايجاد مي

.نيستاجرا SQL_Statement كنند دستوراتي هستند كه رويه ذخيره شده را ايجاد مي.

Strout@اگر كد شعبه وجود داشفته باشفد، . كنند را اضافه مي insert_Shobeاين دستورات، رويه ذخيره شده عبه جديفد وگرنفه، يفك شف . گفردد مي '2'برابر strout@خواهد شد، ولي اگر نام شعبه موجود باشد، '1'برابر

.دهد يرار مي '0'را برابر Strout@اضافه كرده، مقدار

اجرای رویه ذخیره شده. 2-5-7

ايفن . اسفتفاده كنيفد EXECUTEتوانيد از دسفتور مي SQL Serverبراي اجراي رويه ذخيره شده در محيط .رود دستور به صورت زير به كار مي

[ { EXEC | EXECUTE } ] { [ @return_status = ]

{ module_name [ ;number ] | @module_name_var }

[ [ @parameter = ] { value | @variable [ OUTPUT ]

| [ DEFAULT ] }][ ,...n ][ WITH RECOMPILE ]}[;]

:اند از پارامترهاي اين دستور عبارت

متغیر‌return_status: گرداند وضعيت را برمي.

متغیر‌@procedure_name‌:كند نام متغير پارامتر را تعيين مي.

پارامتر‌WITH RECOMPILE: كند رويه ذخيره شده يبل از اجرا كامپايل گفردد و سفپس، تعيين مي .شود در حالت معمولي، رويه ذخيره شده يبل از اجرا كامپايل نمي. اجرا شود

www.kolbedanesh.com

Page 55: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

:زير را ببينيد ل، دستوربه عنوان مثا

EXECUTE dِelete_Shobe '100'

.كند را حذف مي '100'، شعبه شماره delete_Shobeاين دستور، با اجراي رويه ذخيره شده

www.kolbedanesh.com

Page 56: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

فصـل

9 Crystalگیری با گزارشبخشی از

Reports ‌

. ت آشفنا شفديد هاي ايجاد بانك اطالعاتي و اشيا آن، درج، ويرايش، حذف و بازيابي اطالعا تاكنون با روش

هاي كاربردي داشتن ابزاري مناسب براي تهيه گزارش هاي بسيار مهم برنامه دانيد يكي از بخش طور كه مي همانو غيره براي تهيه گزارش Quick Report ،Rave Report ،Microsoft Reportابزارهاي متعددي از يبيل . باشد مي

هفاي برخي از ويژگفي . است Crystal Reportابزار ترين آنها، و مهمترين اند كه رايج از بانك اطالعات ارا ه شده :اند از گيري متمايز نموده است، عبارت گيري كه آن را از بقيه ابزارهاي گزارش اين ابزار گزارش

.گيري است افزارهاي موجود در بازار جهت گزارش ترين نرم يوي

.باشد نويسان مي افزار طراحي گزارش در بين برنامه ترين نرم محبوب

.اي براي دريافت انواع گزارش سريع و دييق را دارد گويي به كاربران مبتدي، متوسط و حرفه يابليت پاسخ

.نمايند افزار استفاده مي ميليون نفر در دنيا از اين نرم 7بيش از

.نمايد داشتن امكانات ويزاردي كه تهيه گزارش را سريع و آسان مي

Crystal Reportزار اف امكانات نرم. 1-9

هاي سريع و دييق را براي اين امكانات، تهيه گزارش. داراي امكانات مختلفي است Crystal Reportافزار نرم :اند از برخي از اين امكانات عبارت. انواع كاربران فراهم كرده است

.هاي مختلف از يبيل ليستي، نموداري، آماري و غيره امكان تهيه انواع گزارش

، SQL Server ،Access ،Oracle ،DB2هفاي اطالعفاتي مختلفف از يبيفل ليت اتصفال بفه انفواع بانفك ياب .پاراداكس و غيره

.اي، تصاوير، پيوندهاي اينترنتي و فيلدهاي ديگر در گزارش يابليت درج انواع فيلدهاي عددي، رشته

.DataReaderو DataSet ،XMLيابليت اتصال به منابع داده مختلف از يبيل

.بندي گزارشات براساس انواع فيلدها يابليت گروه

.اي، تاريخ و زمان هاي پيشرفته با استفاده از توابع رياضي، آماري، رشته يابليت طراحي فرمول

.Basic Syntaxو Crystal Syntaxنويسي به دو حالت داشتن محيط برنامه

هفاي پيونفد پويفا ي ديگفر بفه صفورت كتابخانفه نويسف يابليت درج و افزودن توابع دلخواه از زبان برنامفه (DLL)31.

39- Dynamic Link Library

www.kolbedanesh.com

Page 57: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

نفت، ، ويفژوال اسفتوديو دات 6نويسي از يبيل ويژوال استوديو نسخه هاي برنامه يابليت ارتباط با انواع زبان .نت دلفي و دلفي

.RunTimeيابليت طراحي گزارش به صورت پويا يا

(.Server Side)دهنده رويسها و ساير توابع در طرف س يابليت انجام محاسبات فرمول

مراحل طراحی گزارش. 2-9

:اند طراحي هر گزارش مراحل مختلفي دارد كه اين مراحل در زير آمده .ايجاد ارتباط با بانك اطالعاتي.1

.در گزارش... هاي محاسباتي، پارامترها و افزودن جداول، فيلدها، فرمول.8

.بندي گزارش سازي و گروه تعيين نحوه مرتب.4

.شرط نمايش ركوردها در گزارش تعيين.3

ایجاد گزارش با ویزارد. 3-9

:براي ايجاد گزارش با ويزارد مراحل زيررا انجام دهيد .پروهه جديدي ايجاد كنيد.1

.ظاهر شود Add New Itemرا كليك كنيد تا پنجره Project/Add New Itemگزينه .8

تغييفر 1-1بفه شفكل Add New Itemنجفره را كليك كنيد تا پ Reporting، گزينه Categoriesدر بخش .4 .يابد

.Add New Itemپنجره 9-1شكل

را كليفك كنيفد تفا پنجفره Addرا انتخفاب كفرده، دكمفه Crystal Reportگزينه Templatesدر بخش .3License Agreement (.1-2شكل)ظاهر شود

www.kolbedanesh.com

Page 58: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

.License Agreementپنجره 9-2شكل

(.1-3شكل)ظاهر شود Crystal Reports Galleryرا كليك كنيد تا پنجره OKدر اين پنجره، دكمه .6

.Crystal Reports Galleryپنجره 9-3شكل

را OKرا انتخاب كفرده، دكمفه Using the Report Wizard، گزينه Crystal Reports Galleryدر پنجره .7را Create New Connectionه، آيكفن در اين پنجر(. 1-4شكل)ظاهر شود Dataكليك كنيد تا پنجره

.هاي آن ظاهر شود كليك كنيد تا آيكن

www.kolbedanesh.com

Page 59: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

.Dataپنجره 9-4شكل

ظفاهر شفود OLE DB_Providerرا كليفك كنيفد تفا پنجفره OLE DB(ADO)، آيكفن Dataدر پنجره .8 (.1-5شكل)

.OLE DB Provider پنجره 9-5شكل

را Nextرا انتخاب كفرده دكمفه Microsoft OLE DB Provider for SQL Serverدر اين پنجره، گزينه .7 (.1-6شكل)ظاهر شود Connection Informationكليك كنيد تا پنجره

www.kolbedanesh.com

Page 60: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

.Connection Informationپنجره 9-6شكل

Dataرا كليك كنيفد تفا بفه پنجفره Finishوارد كرده، دكمه 1-6در اين پنجره اطالعات را مانند شكل.3 .برگرديد

را باز كنيفد تفا ليسفت جفداول آن را dboو ABBASNEZGHAD ،Chekهاي ، آيكنDataدر پنجره .11 .ببينيد

.ظاهر شود 1-7تا شكل را كليك مضاعف كنيد Ostanو Cityجداول .11

.Dataانتخاب جداول در پنجره 9-7شكل

اين پنجره براي ايجفاد (. 1-8شكل)ظاهر شود Linkرا كليك كنيد تا پنجره Nextدر اين پنجره دكمه .18 .رود ارتباط بين جداول بانك اطالعات به كار مي

www.kolbedanesh.com

Page 61: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

.Linkپنجره 9-8شكل

ظفاهر Fieldsرا كليك كنيفد تفا پنجفره Next، ارتباط بين جداول را ايجاد كرده دكمه Linkدر پنجره .14 (.1-1شكل)شود

(.Fields)پنجره انتخاب فيلدها 9-9شكل

را در Ostanاز جدول OstanNameو OstanCodeو Cityاز جدول CityCode ،CityNameفيلدهاي .13. كپي شفوند Fields to Displayكليك مضاعف كرده تا اين فيلدها در بخش Available Fieldsبخش

(.1-11شكل)ظاهر شود Groupingرا كليك كنيد تا پنجره Nextاكنون دكمه

www.kolbedanesh.com

Page 62: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

.Groupingپنجره 9-11شكل

ظاهر ( 1-11مانند شكل) Groupingرا كليك مضاعف كرده تا پنجره OstanNameر اين پنجره، فيلد د .16 .شود بندي اطالعات براساس نام استان انجام مي اكنون گروه. شود

Nextدكمفه (. 1-11شفكل )ظاهر شود Summariesرا كليك كنيد تا پنجره Nextدر اين پنجره، دكمه .17

.Summariesپنجره 9-11شكل

را Nextدر ايفن پنجفره دكمفه (. 1-12شفكل )ظاهر شود Record Selectionرا كليك كنيد تا پنجره تفا پنجفره ( خفواهيم ركوردهفاي خاصفي را نمفايش دهفيم چفون در ايفن بخفش نمفي )كليك كنيفد

Report Style (.1-13)ظاهر شود

www.kolbedanesh.com

Page 63: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

.Record Selectionپنجره 9-12شكل

.Record Styleجره پن 9-13شكل

Previewاكنفون پنجفره . را كليك نماييد Finishدر اين پنجره، سبك گزارش را انتخاب كرده و دكمه .18 (.1-14شكل)شود گزارش ظاهر مي

های گزارش بخش. 4-9

بفراي كفار كفردن بفا (. 1-14شفكل )اند آمده 1-1هاي مختلفي است كه در جدول هر گزارش داراي بخش :ه نكات زير توجه كنيدهاي گزارش ب بخش

شفود، گزينفه براي حذف بخشي از گزارش، بفر روي آن كليفك راسفت كفرده از منفويي كفه ظفاهر مفي Delete Section (.توانيد حذف نماييد هاي اصلي گزارش را نمي البته بخش)را اجرا كنيد

www.kolbedanesh.com

Page 64: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

شفود، ظاهر مفي براي اضافه كردن بخش جديد به گزارش، بر روي بخش كليك راست كرده از منويي كه .را اجرا كنيد Insert Section Belowگزينه

شفود، گزينفه براي تعيين خواص بخشي از گزارش بر روي آن كليك راست كرده از منويي كه ظفاهر مفي Section Expert را اجرا كنيد تا كادر محاورهSection Expert اطالعفات ايفن شفكل (. 1-15شفكل )را ببينيفد

را OKهفا را تعيفين كفرده دكمفه خواص اين بخش. اند آمده 1-2كنند كه در جدول خواص بخش را تعيين مي .كليك كنيد

.گزارش Previewپنجره 9-14شكل

.Section Expertپنجره خواص 9-15شكل

www.kolbedanesh.com

Page 65: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

‌.های‌گزارش‌بخش‌‌‌‌3-1جدول‌‌هدف‌بخش

Report Header فقط يك بار در اولين صفحه گفزارش اطالعات اين بخش . كند عنوان گزارش را تعيين مي

.شوند نمايش داده مي

Page Header اطالعات اين بخفش در ابتفداي هفر صففحه . كند اطالعات سرصفحه گزارش را تعيين مي

.گردند گزارش چاپ مي

Details گيرند، بفه ازاي هفر ركفورد بانفك اطالعفاتي در گفزارش اطالعاتي كه در اين بخش يرار مي

.گيرند در اين بخش معموال نام فيلدهاي جداول بانك اطالعات يرار مي. شدچاپ خواهند

Page Footer ماننفد )شفود اطالعات اين بخش در پايان هر صفحه گزارش فقط يك بار نمايش داده مي

(جمع فيلدهاي عددي براي هر صفحه

Report Footer فقفط در )شفوند ده مفي اطالعات اين بخش در آخرين صفحه گزارش يك بفار نمفايش دا

.اي از فيلدهاي عددي يا امضاء مسئولين مانند خالصه(. آخرين صفحه

www.kolbedanesh.com

Page 66: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

فصـل

11 گیری و بازیابی پشتیبان از بانک پشتیبانبخشی از

اطالعات‌

زيفرا ممكفن اسفت بفه داليفل مختلفف . افزار حفظ و نگهداري اطالعات اسفت هاي نرم بخش يكي از مهم

:دهيم كه برخي از اين داليل عبارتند ازاطالعات را از دست ب

هفا اعمفالي مثفل فرمفت يفا حفذف ديسك سخت توسط افراد غيرمجاز مورد دستيابي يفرار گيفرد و آن .0

.اطالعات را انجام دهند

.ديسك سخت خراب شود و يابل بازيابي نباشد .2

(.اشتباها )اطالعات يبلي بر روي اطالعات فعلي كپي گردد .3

.اي كامپيوتري، اطالعات را تخريب كننده ويروس. 4

در ايفن فصفل دو . پفردازيم گيري و بازيابي اطالعات از بانك اطالعات مفي بنابراين در اين فصل به پشتيبان

:اند از اين دو روش عبارت. آموزيم گيري و بازيابي اطالعات را با دو مثال مي روش پشتيبان

Restoreو Backupاستفاده از دستورات .0

SQLDMOاستفاده از كنترل .2

BACKUP DATABASEگیری با دستور پشتیبان .1-11

گيري اسفتفاده ترين روش پشتيبان كامل. گيري از بانك اطالعات وجود دارد هاي متعددي براي پشتيبان روش

و 41هففاي كارنامففه زيففرا، ايففن دسففتور، از بانففك اطالعففات، فايففل. اسففت BACKUP DATABASEاز دسففتور

Filegroupرود اين دستور، به صورت زير به كار مي. نمايد گيري مي ها پشتيبان:

BACKUP DATABASE { database_name | @database_name_var } TO < backup_device > [ ,...n ]

[ [ MIRROR TO < backup_device > [ ,...n ] ] [ ...next-mirror ] ]

[ WITH

[ BLOCKSIZE = { blocksize | @blocksize_variable } ]

[ [ , ] { CHECKSUM | NO_CHECKSUM } ]

[ [ , ] { STOP_ON_ERROR | CONTINUE_AFTER_ERROR } ]

[ [ , ] DESCRIPTION = { 'text' | @text_variable } ]

[ [ , ] DIFFERENTIAL ]

[ [ , ] EXPIREDATE = { date | @date_var }

| RETAINDAYS = { days | @days_var } ]

[ [ , ] PASSWORD = { password | @password_variable } ]

40- Log

www.kolbedanesh.com

Page 67: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

[ [ , ] { FORMAT | NOFORMAT } ]

[ [ , ] { INIT | NOINIT } ]

[ [ , ] { NOSKIP | SKIP } ]

[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]

[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]

[ [ , ] MEDIAPASSWORD = {mediapassword | @mediapassword_variable} ]

[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]

[ [ , ] { NOREWIND | REWIND } ]

[ [ , ] { NOUNLOAD | UNLOAD } ]

[ [ , ] RESTART ]

[ [ , ] STATS [ = percentage ] ]

[ [ , ] COPY_ONLY

.آمده است 11-1پارامترهاي اين دستور در جدول

‌.BACKUP DATABASEپارامترهای‌دستور‌‌‌‌‌11-1جدول‌

‌هدف‌پارامترdatabase_name گيري شود نام بانك اطالعاتي است كه بايد از آن پشتيبان.

@database_name_var گيري شود، در اين متغير يرار دارد نام بانك اطالعاتي كه بايد از آن پشتيبان.

backup_device كند كه پشتيبان بايد در آن يرار داده شود نام دستگاهي را تعيين مي.

DESCREPTION نمايد توصيف پشتيبان را مشخص مي.

BLOKSIZE كند مي اندازه فيزيكي بلوك را به بايت تعيين.

DIFFERENTIAL گيرد اند، پشتيبان مي از اطالعاتي كه تغيير يافته.

EXPIREDATE كند تاريخ و زمان انقضاي پشتيبان را تعيين مي.

RETAINDAYS توان بر روي اين مجموعه پشفتيبان بازنويسفي نمايد چند روز بعد مي تعيين مي

.كرد( رونويسي)

PASSWORD دهد تا هر كاربري نتواند آن را بازيابي كند يبان يرار ميكلمه عبور بر روي پشت.

FORMAT هايي كفه بفراي عمفل Volumeرسانه بايد بر روي تمام 41كند سرآيند تعيين مي

.اند، نوشته شود پشتيبان استفاده شده

NOFORMAT گيري هايي كه براي عمل پشتيبانVolumeكند سرآيند رسانه بر روي تمام تعيين مي

.اند، نوشته نشود ده شدهاستفا

INIT تمام مجموعه پشتيبان به جز سرآيند رسانه بايد بازنويسي شود.

NOINIT كنفد و مجموعفه مجموعه پشتيبان را به يك دستگاه ديسك يا نوار اضفافه مفي

.كند هاي يبلي را حفظ مي پشتيبان

MEDIADESCRIPTION كند توصيف رسانه را مشخص مي.

41- Header

www.kolbedanesh.com

Page 68: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

‌.BACKUP DATABASEپارامترهای‌دستور‌‌‌‌‌11-1جدول‌ادامه‌

‌هدف‌پارامترMEDIANAME كاراكتر است 128كند كه حداكثر نام رسانه را تعيين مي.

MEDIAPASSWORD دهد تا هر كاربري نتواند آن رسانه را باز كند كلمه عبور را بر روي رسانه يرار مي.

NAME باشد كاراكتر مي 128كند كه حداكثر نام پشتيبان را مشخص مي.

NOSKIP

دهد و اگفر هاي از يبيل كلمه عبور را انجام مي خواند و تست سرآيند رسانه را ميكند آيا نام رسفانه دريفافتي بفا نفام تعيين گردد، چك مي MEDIANAMEپارامتر

.رسانه در سرآيند برابر است يا خيرSKIP كند تاريخ انقضاي و تست اوليه مجموعه پشتيبان را غيرفعال مي.

NOUNLOAD آورد گيري، نوار را از نوارخوان بيرون نمي پس از پشتيبان.

UNLOAD آورد گيري، نوار را از نوارخوان بيرون مي پس از پشتيبان.

NOREWIND گرداند گيري، نوار را به عقب برنمي پس از پشتيبان.

REWIND گرداند گيري، نوار را به عقب برمي س از پشتيبانپ.

RESTART گيري را از مكاني كه يطفع شفده اسفت، گيري يطع شده باشد، پشتيبان اگر پشتيبان

.دهد ادامه مي

STATS كند كه بايد درصد پيشرفت كار نمايش داده شود فاصله زماني را تعيين مي.

RESTORE DATABASEدستور . 2-11

نسخه كامفل بانفك RESTORE DATABASEدستور . ختلفي براي بازيابي پشتيبان وجود داردهاي م روشايفن دسفتور بفه . كنفد از آن پشتيبان تهيه گرديد، بازيابي مي BACKUP DATABASEاطالعات را كه با دستور

:رود صورت زير به كار مي

RESTORE DATABASE { database_name | @database_name_var } [ FROM <backup_device> [ ,...n ] ]

[ WITH

[ { CHECKSUM | NO_CHECKSUM } ]

[ [ , ] { CONTINUE_AFTER_ERROR | STOP_ON_ERROR } ]

[ [ , ] FILE = { file_number | @file_number } ]

[ [ , ] KEEP_REPLICATION ]

[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]

[ [ , ] MEDIAPASSWORD = { mediapassword |

@mediapassword_variable } ]

[ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]

[ ,...n ]

[ [ , ] PASSWORD = { password | @password_variable } ]

[ [ , ] { RECOVERY | NORECOVERY | STANDBY =

{standby_file_name | @standby_file_name_var }

} ]

[ [ , ] REPLACE ]

[ [ , ] RESTART ]

www.kolbedanesh.com

Page 69: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

[ [ , ] RESTRICTED_USER ]

[ [ , ] { REWIND | NOREWIND } ]

[ [ , ] STATS [ = percentage ] ]

[ [ , ] { STOPAT = { date_time | @date_time_var }

| STOPATMARK = { 'mark_name' | 'lsn:lsn_number' }

[ AFTER datetime ]

| STOPBEFOREMARK = { 'mark_name' | 'lsn:lsn_number' }

[ AFTER datetime ]

} ]

[ [ , ] { UNLOAD | NOUNLOAD } ]

]

[;]

برخي از پارامترهاي ديگر ايفن . است BACKUP DATABASEدستور مانند پارامتر دستور پارامترهاي اين .اند آمده 11-2دستور در جدول

‌.RESTORE DATABASEبرخی‌از‌پارامترهای‌دستور‌‌‌‌‌11-8جدول‌

‌هدف‌پارامتر

RESTRICTED_USER نند پس توا مي dbcreatorيا db_owner ،sysadminكند فقط كاربران تعيين مي

.از بازيابي اطالعات به بانك دستيابي داشته باشند

MOVE كند ها را در زمان بازيابي به مكان ديگري منتقل مي فايل.

KEEP_REPLICATION دهنفده ديگفري تكثيفر در هنگام بازيابي بانك اطالعات آن را بر روي سرويس

.كند مي

PARTIAL هدد عمل بازيابي را به صورت جز ي انجام مي.

REPLACE توانفد بفا نفام ايفد، مفي كند نام بانك اطالعات كه از آن پشتيبان گرفته تعيين مي

.شوند، يكسان باشد بانك اطالعات كه در آن بازيابي مي

11-1مثالاز بانك اطالعفات پشفتيبان تهيفه كفرده يفا پشفتيبان را Restoreو Backupاي كه با استفاده از دستور برنامه

.كند مي بازيابي

‌مراحل‌طراحی‌و‌اجرا

‌.ایجاد‌کنید‌BackupRestoreپروژه‌جدیدی‌به‌نام‌ .0

:تایپ‌کنید‌usingدستورات‌زیر‌را‌در‌بخش‌ .2

using System.Data.SqlClient; using System.Data.SqlTypes;

‌‌

www.kolbedanesh.com

Page 70: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

،‌دو‌کنتورل‌‌(های‌اطالعوات‌‌برای‌نمایش‌لیست‌بانک)‌ComboBox،‌یک‌کنترل‌Labelسه‌کنترل‌ .3

TextBoxچهار‌کنترل‌‌،Buttonو‌یوک‌کنتورل‌‌‌‌FolderBrowserDialog‌(بورای‌انتخواب‌مسویر‌‌‌‌‌.به‌برنامه‌اضافه‌کنید(‌گیری‌و‌بازیابی‌پشتیبان‌پشتیبان

را‌بوه‌صوورت‌زیور‌‌‌‌‌Form1_Loadناحیه‌خالی‌فرم‌را‌کلیک‌مضاعف‌کرده،‌دستورات‌رویداد‌ .4‌:تایپ‌کنید

private void Form1_Load(object sender, EventArgs e)

{

label1.RightToLeft = RightToLeft.Yes;

label2.RightToLeft = RightToLeft.Yes;

button1.Text = "پشتيبان گيري"; button2.Text = "بازيابي"; button3.Text = " مسير انتخاب ";

button4.Text = "خروج"; label1.Text = " ن گيرينام بانك اطالعات جهت پشتيبا ";

label2.Text = "نام بانك اطالعات براي بازيابي اطالعات"; label3.Text = "مسير"; comboBox1Fill();

}

را فراخفواني ()comboBox1Fillكننفد و تفابع هاي روي فرم را مقداردهي مي اين دستورات، خواص كنترل .نمايش دهند comboBox1هاي اطالعاتي را در كنترل نمايند تا ليست بانك مي

‌:بروید‌و‌دستورات‌زیر‌را‌تایپ‌کنید‌()Form1_Loadبه‌قبل‌از‌رویداد‌ .5

private string SQL = "SELECT name FROM sys.databases"; private string connStr = "Data Source=.\\SQLEXPRESS;Initial

Catalog=;Integrated Security=True";

// Declare global objects...

SqlConnection conn;

SqlDataAdapter da;

DataSet ds = new DataSet();

www.kolbedanesh.com

Page 71: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

در .رود هاي اطالعات به كار مي ند كه براي بازيابي بانكنك را تعريف مي يSQLاين دستورات، ابتدا دستور ، SqlConnection اشففيايي از يبيففل ،د و در پايففاننففكن ادامففه، رشففته اتصففال را تعريففف كففرده، مقففداردهي مففي

SqlDataAdapter وDataSet دننماي را تعريف مي.

‌:را‌به‌صورت‌زیر‌تعریف‌کنید‌comboBox1Fillدر‌ادامه،‌تابع‌ .6

private void comboBox1Fill() {

conn = new SqlConnection(connStr);

da = new SqlDataAdapter(SQL, conn);

// Add items to the combo box...

conn.ConnectionString = connStr;

conn = new SqlConnection(connStr);

conn.Open();

da = new SqlDataAdapter(SQL, conn);

ds.Clear();

da.Fill(ds, "sys.databases");

comboBox1.DataSource = ds.Tables[0].DefaultView;

comboBox1.DisplayMember = "name";

}

را ايجاد كرده، daو connهاي به نام SqlDataAdapterو SqlConnectionهايي از اشيا ، ابتدا نمونهتابعاين هاي اطالعات متصفل بفه سفرويس نام بانك ،در ادامه. كند را مقدار داده آن را باز مي connخواص شيء ،سپسهفاي نفام بانفك ،و در پايفان ( SELECT name FROM sys.databasesبا دسفتور )دهد انتقال مي daبه را دهنده

.دهد انتقال مي comboBox1و از طريق آن بر روي dsاطالعات را به آن‌را‌به‌صوورت‌زیور‌تغییور‌‌‌‌‌Clickرا‌کلیک‌مضاعف‌کرده‌و‌دستورات‌رویداد‌‌button1دکمه‌ .7

‌:دهید

private void button1_Click(object sender, EventArgs e)

{

try

{

if (textBox2.Text == "") MessageBox.Show(" مسير انتخاب نشد"); else

{

if (conn.State == ConnectionState.Open) conn.Close();

conn.ConnectionString = connStr;

conn.Open();

string cmdBackup = "BACKUP DATABASE " + comboBox1.Text

+ " TO DISK = '" + textBox2.Text + comboBox1.Text +

"1.bak', " + "DISK='" + textBox2.Text +

comboBox1.Text + "2.bak' ";

SqlCommand cmd = new SqlCommand(cmdBackup, conn);

cmd.CommandType = CommandType.Text;

cmd.ExecuteNonQuery();

conn.Close();

MessageBox.Show(" بانك اطالعات مورد نور پشتيبان گيري گرفته شداز ");

}

}

catch

www.kolbedanesh.com

Page 72: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

{

MessageBox.Show("خطا در پشتيبان گيري رخ داد"); }

}

مسير پشتيبان توسفط )كنند پشتيبان تهيه مي comboBox1اين دستورات، از بانك اطالعات انتخاب شده در را يفرار داده تفا در صفورت بفروز خطفا در هنگفام tryبراي اين منوفور، ابتفدا دسفتور (. شود بر انتخاب ميكار

ابتدا تست try ،در دستورات. ظاهر شود «گیری‌رخ‌داد‌پشتیبانخطا‌در‌»گيري، برنامه يطع نشود و پيام پشتيبان elseدر بخفش ،(كاربر انتخاب شده باشفد توسطيرارگرفتن پشتيبان يعني، مسير )خالي نباشد textBox2كند مي

در ادامه، رشته اتصفال . بندد اگر اتصال باز باشد، آن را مي. باز است يا خير كند آيا اتصال به بانك ابتدا تست مي Stringدستور )كند گيري را ايجاد مي سپس، دستور پشتيبان. نمايد را مقداردهي كرده اتصال را باز مي connشيء

cmdBackup = … .) در پايان، يك شيءSqlCommand به نامcmd كند ايجاد كرده، خواص آن را مقداردهي ميكند و اتصال را بسته، پيام مناسب نمايش اجرا مي ExecuteNonQueryگيري را با فراخواني متد و دستور پشتيبان

.دهد مي

بوه‌صوورت‌زیور‌تغییور‌‌‌‌‌آن‌را‌‌Clickرا‌کلیک‌مضاعف‌کرده،‌دستورات‌رویداد‌‌button2دکمه‌ .8‌:دهید

private void button2_Click(object sender, EventArgs e)

{

try

{

if (textBox1.Text == "" || textBox2.Text == "")

MessageBox.Show("نام بانك يا مسير انتخاب نشد"); else

{

connStr = "Integrated Security=SSPI;

Data Source=.\\SQLEXPRESS;";

conn = new SqlConnection(connStr);

if (conn.State == ConnectionState.Open) conn.Close();

conn.ConnectionString = connStr;

conn.Open();

string cmdRestore = "RESTORE DATABASE " + textBox1.Text +

" FROM DISK = '" + textBox2.Text + textBox1.Text +

"1.bak', " + "DISK = '" + textBox2.Text +

textBox1.Text + "2.bak' ";

SqlCommand cmd = new SqlCommand(cmdRestore, conn);

cmd.CommandType = CommandType.Text;

cmd.ExecuteNonQuery();

MessageBox.Show("بانك اطالعات مورد نور بازيابي شد"); conn.Close();

}

}

catch

{

MessageBox.Show("خطا در بازيابي رخ داد"); }

}

www.kolbedanesh.com

Page 73: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

كفه در يوارد شفده اسفت و پشفتيبان آن در مسفير textBox1كه نفام آن در ي، بانك اطالعاتاتاين دستورtextBox2 براي انجام اين كار، از . دنكن وارد گرديد، را بازيابي ميtry كند تا در صورت بروز خطا در استفاده مي

خالي textBox2يا textBox1كند كه محتويات ، ابتدا بررسي ميtryدر بالك . برنامه يطع نگردد ،بازيابي پشتيبانشفيء اتصفال ايجفاد رشته اتصال را تغيير داده يفك ،سپس(. دهد اگر خالي باشد، پيام مناسب نمايش مي)نباشد

بفاز ()Openدر ادامه، رشته اتصفال را مقفدار داده و اتصفال را بفا متفد . بندد باز باشد، آن را مي لكرده اگر اتصاو SqlCommandرود را ايجاد كرده با ايجفاد شفيء ايي كه براي بازيابي به كار ميSQLدستور ،در پايان. كند مي

.بندد كند و پيام مناسب را نمايش داده اتصال مي بازيابي را اجرا ميدستور ()ExecuteNonQueryاجراي متد ‌:را‌کلیک‌مضاعف‌کرده‌دستورات‌آن‌را‌به‌صورت‌زیر‌تغییر‌دهید‌button3دکمه‌ .9

‌‌ private void button3_Click(object sender, EventArgs e) {

folderBrowserDialog1.Description = " كنيدمسير مورد نور را انتخاب ";

folderBrowserDialog1.ShowDialog();

textBox2.Text = folderBrowserDialog1.SelectedPath;

if (textBox2.Text.Length > 3) textBox2.Text = textBox2.Text + "\\";

}

بان را انتخفاب گيري و بازيابي پشتي مسير پشتيبان FolderBrowserDialogاين دستورات، با استفاده از كنترل .گردد اضافه مي '\' كاركتراگر اطالعات مسير انتخاب شده بيش از سه كاراكتر باشد، به انتهاي مسير . كنند مي

‌:را‌کلیک‌مضاعف‌کرده،‌دستورات‌آن‌را‌به‌صورت‌زیر‌تغییر‌دهید‌button4دکمه‌ .01

private void button4_Click(object sender, EventArgs e)

{

Close();

}

‌.‌شود‌ظاهر‌می‌11-1اکنون‌شکل.‌برنامه‌را‌ذخیره‌و‌اجرا‌کنید .00

.11-1نمونه اوليه خروجي مثال 11-1شكل

و دكمفه ( را انتخاب نمفودم Chekمن بانك اطالعات )نام بانك اطالعات را انتخاب كنيد comboBox1در بفه عنفوان مثفال، )مسير مفورد نوفر شكل در اين. ظاهر شودانتخاب مسير را كليك كنيد تا شكل انتخاب مسير

D:\Backup را انتخاب كنيد و دكمهOK را كليك كرده تا مسير انتخاب شده را درtextBox2 2شفكل )ببينيفد-11 .))

www.kolbedanesh.com

Page 74: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

.گيري نمونه خروجي براي پشتيبان 11-2شكل

:گيري را كليك كنيد تا شكل زير ظاهر شود اكنون دكمه پشتيبان

نام بانك اطالعات براي بازيفابي را وارد كنيفد textBox1براي بازيابي پشتيبان در . نيدرا كليك ك OKدكمه ظفاهر 11-3چون مسير از يبل مشخص است، دكمه بازيابي را كليك كنيد تفا شفكل (. را وارد كردم Chekمن، )

.سپس، دكمه خروج را كليك كنيد OKبراي خروج از برنامه دكمه . شود

.خروجي براي بازيابي اطالعات نمونه 11-3شكل

www.kolbedanesh.com

Page 75: یسیون همانرب ماگ هب ماگ شزومآ اب یتاعلاطا کنابdl.kolbedanesh.com/kolbe/97/2/barname nevisi bank... · 1111-8867778:نفلت38178-84337یتسپقودنص،لباب

کتاب شامل 304 صفحھ است کھ فایل الکترونیکى آن را مى توانید از سایت

کتابراه تھیھ کنید.

http://ktbr.ir/b28448

www.kolbedanesh.com