ایران سرفراز- نرم افزار وپروژهای دانشجویی


نرم افزار وپروژهای دانشجویی

فصل بیست و دوم استفاده از بانک اطلاعاتی در #C

<!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:1; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:0 0 0 0 0 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman","serif"; mso-fareast-font-family:"Times New Roman";} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0; mso-gutter-direction:rtl;} div.Section1 {page:Section1;} -->

فصل بیست و دوم

  C#  استفاده از بانک اطلاعاتی در 

آنچه که در این فصل یاد خواهید گرفت:

با مفهوم بان کهای اطلاعاتی آشنا خواهید شد.

آشنا خواهید شد و از آن استفاده خواهید کرد. SQL در زبان SELECT • با دستور

کنترل های دسترسی به داده های درون بانک اطلاعاتی را بررسی خواهید کرد.

با نحوه ی استفاده از داده ها در برنامه های ویندوز آشنا خواهید شد.

2005 استفاده خواهید کرد. VS • از ویزاردهای دسترسی به اطلاعات در

-1-22 مقدمه

2005 بیشتر VS اغلب برنامه های کامپیوتری که امروزه نوشته م یشوند به نحوی با داد هها و اطلاعات مختلف کار می کنند. در

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

،SQL server برنامه ها نیاز دارید که بتوانید در برنامه ی خود با نرم افزارهای مربوط به این بانک های اطلاعاتی، مانند

کار کنید. Sybase و یا oracle ،Access

2005 ابزارهای و ویزاردهای زیادی برای متصل شدن به انواع بانک های اطلاعاتی وجود دارد. به وسیله ی این ابزارها VS در

می توانید اطلاعات خود را در درون این بان کهای اطلاعاتی قرار دهید و یا آن را از بان کهای اطلاعاتی دریافت کرده و

تغییرات مورد نظر خود را روی آنها انجام دهید. در طی این فصل سعی کنید که با این ابزارها و نحو هی کارکرد آنها در برنامه

بیشتر آشنا شوید.

درفصل بعدی تمرکز خود را روی استفاده از بانک های اطلاعاتی از طریق کدنویسی قرار خواهیم داد و مشاهده خواهیم

کردکه چگونه می توان از طریق برنام هنویسی به صورت مستقیم به این بان کهای اطلاعاتی دسترسی پیدا کرد. بعد از اینکه

مقداری در کدنویسی بانک های اطلاعاتی تمرین کردید، خواهید دید که استفاده از کد نسبت به استفاده از ویزاردها و ابزارها

زمان بسیار کمتری را اشغال می کند.

که Microsoft Access نکته: برای انجام تمرینات و مثا لهای این فصل لازم است که نسخ هی 2000 ( و یا بالاتر) برنامه

به شمار می رود را نصب کنید. Microsoft office جزئی از برنامه ی

mohsen_mahyar@yahoo.com - C# برنامه نویسی

388

بانک اطلاعاتی چیست؟

اصولا" هر بانک اطلاعاتی شامل یک و یا چند فایل بزرگ و پیچیده است که داد هها در آن در یک قالب و فرمت ساخت یافته

ذخیره می شوند. موتور بانک اطلاعاثی معمولا به برنام های اطلاق م یشود که این فایل و یا فایلهایی و نیز داده های درون آنها

به عنوان موتور بانک اطلاعاتی استفاده خواهیم Microsoft Access را مدیریت می کند. در طی این فصل از برنامه ی

کرد.

Access اشیای موجود در

است) معمولا" از قسم تهای مختلفی مانند mdb. که پسوند آن نیز ) Access یک فایل بانک اطلاعاتی مربوط به برنام هی

جدولها، پرس وجوها، فرم ها، گزارشات، ماکروها و ماژول ها تشکیل شده است. به این قسم تهای تشکیل دهند هی یک بانک

اطلاعاتی اشیای بانک اطلاعاتی گقته می شود. در یک فایل مربوط به بانک اطلاعاتی عموما" داده های زیادی وجود دارند و به

سعی می کنند با ارائه دادن امکانات اضافی، به کاربران اجازه دهند با Access همین دلیل، موتورهای بانک اطلاعاتی مانند

وجود دارند، جدول ها و پرس وجوها برای نگهداری Access این اطلاعات کار کنند، در بین اشیایی که در یک بانک اطلاعاتی

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

کاربران بتوانند به سادگی با داد ههای موجود در جدول کار کنند.

اما به هر حال به علت پیچیده بودن ساختار موتورهای بانک اطلاعاتی، کاربران معمولی حتی با استفاده از این قسمت ها نیز

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

2005 و یا هر زبان برنامه نویسی دیگر این است که به کاربر اجازه دهیم به سادگی از اطلاعات درون بانک ها VS استفاده از

استفاده کند، پس در این برنامه ها فقط به اطلاعات درون یک بانک اطلاعاتی نیاز خواهیم داشت نه به قسمتهایی مانند فرم ها

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

پرس وجوها قرار می دهیم.

جدول ها

یک جدول شامل یک مجموعه از اطلاعات است که معمولا" حاوی یک و یا چند ستون و نیز یک و یا چند ردیف از داده ها

و نیز بیشتر بانک ها یا اطلاعاتی) به هر یک از این ستو نها یک فیلد گفته م یشود. همچنین هر ردیف از ) Access است. در

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

در یک جدول، مشخص کنند هی نام firstName جدول ذخیره شده است را نگهداری م یکند. برای مثال، فیلدی به نام

مشترک و یا کارمندی است که اطلاعات او در آن جدول ذخیره شده است. بنابراین این فیلد یکی از مشخصه های آن کارمند

و یا مشترک را نمایش می دهد. در هر جدول یک رکورد شامل یک مجموعه از فیلدها است که اطلاعات و مشخص ههای مربوط

به یک نمونه از داده هایی که در آن جدول ذخیره شده است را نشان می دهد. برای مثال، جدولی را در نظر بگیرید که دارای

است و برای نگهداری اسامی کارمندان استفاده می شود. LastName و FirstName دو فیلد (دو ستون اطلاعات) به نامهای

به مجموع هی نام و نام خانوادگی هر کارمندی که اطلاعات او در این جدول وجود داشته باشد یک رکورد گفته م یشود. برای

و .... فیلدهای این جدول و هر ردیف از اطلاعات نیز رکوردهای آن را FirstName ،EmployeeID ،1- مثال، درشکل 22

مشخص می کند.

1- شکل 22

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

389

پرس وجوها

نوشته شده است و برای دریافت اطلاعات از بانک SQL در هر بانک اطلاعاتی عموما" به یک سری از دستورات که زبان

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

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

تغییراتی را در آنها ایجاد کنیم.

را بنویسیم SQL در یک موتور بانک اطلاعاتی به دو روش می توانیم از پر سوجوها استفاده کنیم. اول این است که یک دستور

و سپس آن را اجرا کرده و نتیج هی آن را مشاهده کنیم. روش دوم این است که همانند دیگر زبان های برنامه نویسی یک

ایجاد کنیم و سپس با فراخوانی آن زیربرنامه اطلاعاتی بدست آوریم. در برنامه هایی که SQL زیربرنامه با استفاده از دستورات

می نویسیم نیز می توانیم از یک زیربرنامه برای دسترسی به اطلاعات مورد نیاز استفاده کنیم و هم می توانیم #VC به زبان

مورد نیاز را با استفاده از برنامه به موتور بانک اطلاعاتی بفرستیم و نتایج حاصل را دریافت کرده و نمایش دهیم. SQL دستور

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

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

برخوردار است. زیرا موتور بانک اطلاعاتی م یتواند دستورات درون آن زیربرنامه را تحلیل کرده و یک روش کلی برای

سریع تر اجرا کردن آن ایجاد کند( به عبارت دیگر می تواند آنها را کامپایل کند). اما دستوراتی که به صورت عادی به موتور

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

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

SQL و دستورات آن آشنا شویم. خوشبختانه، زبان SQL برای درک بهتر مفهوم پرس وجوها، بهتر است ابتدا مقداری با زبان

نسبت به زبانهای برنامه نویسی دیگر بسیار ساد هتر است و به سرعت می توان نحوه ی استفاده از آن را یاد گرفت.

به زیربرنامه هایی که برای پرس وجو از یک بانک اطلاعاتی نوشته می شود. زیربرنامه های ذخیره شده 1 گفته می شود.

SQL در زبان SELECT دستور

برخلاف چیزی که ممکن است تصور کنید، زیاد مشابه زبانهای برنام هویسی که تاکنون دیده ید نیست. دستورات SQL زبان

به صورت استاندارد درآمده است. نسخه ی استاندارد این زبان که ( ANSI ) این زبان به وسیله موسسه استاندارد ملی آمریکا

نیز نامیده می شود، به وسیل هی تمام موتورهای بانک اطلاعاتی پشتیبانی م یشود. اما هر یک از این موتورهای ANSI SQL

بانک اطلاعاتی امکانات مخصوص بیشتری را نیز به این زبان اضافه کرده اند که معمولا" فقط در همان موتور بانک اطلاعاتی

قابل استفاده است.

1 Stored procedure

mohsen_mahyar@yahoo.com - C# برنامه نویسی

390

را آموختید می توانید از SQL در این است که به این وسیله، هنگامی که اصول دستورات زبان ANSI SQL مزایای یادگیری

در تمام موتورهای بانک اطلاعاتی استفاده کنید. به این ترتیب برای این که بتوانید موتور بانک SQL آنها برای برنام هنویسی

اطلاعاتی خود را تغییر دهید، فقط کافی است نحوه ی کارکرد با رابط گرافیکی آن را یاد بگیرید و سپس می توانید از

استاندارد در آن محیط نیز استفاده کنید. البته همانطور که گفتیم هر موتور بانک اطلاعاتی دارای دستورات SQL دستورات

خاص خود است که باعث افزایش کارایی و بهینه ساختن اجرای دستورات می شود. اما تاحد ممکن بهتر است از این دستورات

را به کار ببرید. به این ترتیب، می توانید هر زمان که لازم باشد به SQL دربرنامه ی خود استفاده نکنید و دستورات استاندارد

سادگی موتور بانک اطلاعاتی خود را تغییر دهید.

از تعداد کمی دستور تشکیل شده است که هر یک کار خاصی را انجام م یدهند. یکی از پرکاربردترین و مهمترین SQL زبان

است که به وسیله ی آن می توانید یک یا چند فیلد اطلاعات مربوط به یک یا چند رکورد در جدول SELECT این دستورات

فقط م یتوانید داده ها را از SELECT بانک اطلاعاتی خود را بدست آورید. البته دقت داشته باشید که به وسیل هی دستور

جداول بدست آورید، اما نمی توانید هیچ تغییری در آنها ایجاد کنید.

مشابه دستور زیر است: SQL در زبان SELECT ساده ترین دستور

SELECT * FROM Employees;

این دستور همانطور که مفهوم کلمات آن نیز مشخص می کنند، به این معنی است که اطلاعات موجود در تمام فیلدهای مربوط

به معنی تمام فیلدها است. کلمه ی SELECT را انتخاب کن. علامت * در دستور Employees به همه ی رکوردهای جدول

نیز نام جدولی در بانک اطلاعاتی است که این دستور باید بر روی آن اجرا شود. Employees

وارد شده است را Employees اگر بخواهید فقط فیلدهای مربوط به نام و نام خانوادگی افرادی که اطلاعات آنها در جدول

بدست آورید، کافی است که علامت * را با نام فیلدهای مورد نظر خود به صورت زیر عوض کنید:

SELECT [First Name], [Last Name] FROM Employees;

دقت کنید که هنگام وارد کردن این دستور حتما" باید از علامت [ ] در ابتدای نام فیلدها استفاده کنید. زیرا نام این فیلدها

با مشکل مواجه شود. استفاده از [] First Name است و باعث می شود که برنامه در تفسیر نام ( space) حاوی فضای خالی

به موتور بانک اطلاعاتی می گوید که کلمات داخل [] را به عنوان یک نام در نظر بگیرد. البته اگر نام این فیلد حاوی کاراکتر

فضای خالی نبود، می توانستید از [] استفاده نکنید.

همانند زبان انگلیسی عادی و روزمره هستند و حتی فردی که برنامه نویس SQL همانطور که مشاهده می کنید دستورات

نیست نیز می تواند آن را خوانده و مفهوم آن را درک کند. برای مثال، اگر بخواهیم فقط داده هایی که دارای شرط خاصی

استفاده کنیم. SELECT در پایان دستور WHERE هستند از جدول انتخاب شده و نمایش داده شوند، کافی است از عبارت

شروع می شوند انتخاب شوند، باید از دستور D مثلا" اگر بخواهیم در دستور قبل فقط افرادی که نام خانوادگی آنها با حروف

زیر استفاده کنیم:

SELECT [First Name], [Last Name] FROM Employees

WHERE [Last Name] LIKE ‘D*’;

صدق می کنند. بنابراین WHERE باعث می شود فقط داد ههایی از جدول انتخاب شوند که در شرط مقابل عبارت WHERE عبارت

و Last Name برود و فیلد Employees قبلی باعث می شود که موتور بانک اطلاعاتی به داخل جدول SELECT دستور

نیز به این معنی `*D` شروع می شود را انتخاب کند. عبارت D آنها با حرف Last Name تمام رکوردهایی که First Name

به این معنی است که "هر عبارتی که در آن `*D*` شروع شده است . برای مثال، عبارت D است که هر عبارتی که با حروف

وجود داشته باشد." D حرف

در آخر نیز بعد از اینکه داده های موردنظر خود را انتخاب کردید، می توانید آنها را به نحوی که تمایل دارید به صورت صعودی

ORDER ازعبارت SELECT برای کار باید در انتهای دستور First Name و یا نزولی مرتب کنید، برای مثال، براساس فیلد

استفاده کنید. BY

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

391

SELECT [First Name], [Last Name] FROM Employees

WHERE [Last Name] LIKE ‘D*’ ORDER BY [First Name];

اجرای این دستور باعث می شود اطلاعاتی از جدول انتخاب شوند. برای مثال، خروجی این دستور م یتواند مانند زیر باشد:

Angela Dunn

David Dunstan

Zebedee Dean

همانطور که مشاهده می کنید در این قسمت از یک دستور تقریبا" کامل استفاده کردیم، اما درک آن نیز بسیار ساده بود و

تقریبا" بسیار مشابه چیزی بود که در زبان انگلیسی برای منظور خود باید عنوان کنید. معمولا" هنگامی که اطلاعات را

A براساس فیلدهای رشته ای مرتب می کنید، داده ها به صورت صعودی مرتب می شوند. به این صورت که اطلاعات با حرف

در انتها نمایش داده می شوند. اما هنگامی که بخواهید اطلاعات را براساس یک فیلد عددی مرتب Z ابتدا و اطلاعات با حرف

کنید، ممکن است تمایل داشته باشید که داده های بزرگتر ابتدا نمایش داده شوند. برای مثال ممکن است بخواهید اطلاعاتی

که انتخاب می شوند، بر اساس قیمت کالا مرتب شده و کالای های گرانتر نیز در بالای جدول قرار بگیرند. بنابراین لازم است

استفاده DESC از عبارت ORDER BY که اطلاعات را به صورت نزولی مرتب کنید. برای این کارکافی است در پایان دستور

کنید. به این ترتیب داد هها به صورت نزولی مرتب خواهند شد.

SELECT [First Name], [Last Name] FROM Employees

WHERE [Last Name] LIKE ‘D*’ ORDER BY [First Name] DESC;

اجرای دستور بالا نتایجی را مشابه زیر برمی گرداند:

Zebedee Dean

David Dunstan

Angela Dunn

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

استفاده کنید. البته استفاده از این عبارت الزامی نیست، زیرا به صورت پیش فرض ASC از عبارت ORDER BY دستور

اطلاعات به صورت صعودی مرتب م یشوند.

می تواند با ساختاری مشابه زیر مورد استفاده قرار بگیرد: SELECT بطور خلاصه، م یتوان گفت که دستور

SELECT select-list

FROM table-name

[WHERE search-condition]

[ORDER BY order-by-expression [ASC | DESC]]

حتما" باید لیستی از نام فیلدهای مورد نظر و یا علامت * برای select-list این عبارت به این معنی است که در قسمت

نیز باید نام جدول مورد نظر را بیاورد. می توانید از table-list انتخاب تمام فیلدها را ذکر کنید. همچنین در قسمت

search-condition خود استفاده کنید. به این ترتیب فقط داده هایی که در شرط SELECT در دستور WHERE عبارت

نیز می توانید داده ها را مرتب کنید. برای این کار باید ORDER BY صدق می کنند، انتخاب خواهند شد. با استفاده از قسمت

فیلدی که می خواهید داده ها براساس آن مرتب شوند را ذکر کنید. برای صعودی و یا order-by-expression در قسمت

در انتهای دستور استفاده کنید. DESC و یا ASC نزولی بدن مرت بسازی نیز م یتوانید ازعبارت

البته اگر بخواهید داد هها را از چندین جدول یک بانک اطلاعاتی استخراج کنید و یا براساس رابط هی خاصی به داد هها

به مقدار قابل ملاحظه ای پیچیده خواهند شد که توضیح این گونه دستورات از اهداف SQL دسترسی پیدا کنید، دستورات

این کتاب خارج است و در برنام ههای این فصل و فصل بعد نیز به آنها نیازی نخواهیم داشت.

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

این که به ادامه ی فصل بپردازیم بهتر است به سوالات زیر به صورت ذهنی پاسخ دهید.

mohsen_mahyar@yahoo.com - C# برنامه نویسی

392

Price و Description ،Name بنویسیم که داده های موجود در فیلدهای SELECT • چگونه می توانید یک دستور

استخراج کند؟ Products را از یک جدول به نام

آنها Description • چگونه می توان دستور بالا را به گون های تغییر داد تا فقط داده هایی را برگرداند که در فیلد

وجود داشته باشد؟ DVD عبارت

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

-2-22 کنترل های دسترسی اطلاعات

2005# برای دسترسی به اطلاعات و نمایش آنها سه کنترل مهم و اصلی وجود دارند که عبارتند از: C در ویژوال

2 - همانطور که در شکل 22 DataSet و BindingSource دو کنترل .DataSet و TableAdapter ،Bindingsource

نیز براساس مسیری که برای TableAdapter در جعبه ابزار وجود دارند. کنترل Data مشاهده می کنید در قسمت

دسترسی به اطلاعات درون بانک اطلاعاتی و نمایش آنها طی می کنید به صورت اتوماتیک ایجاد خواهد شد.

2- شکل 22

نکته: این کنترل ها که عموما" به عنوان کنترل های داده ای شناخته می شوند، خود فقط چندین کلاس هستند، مانند تمام

که در قسمتهای قبلی از آنها استفاده کردیم. در این فصل فقط با نحو هی استفاده از این کلاس ها در .NET کلاس های دیگر

برنامه های ویندوزی آشنا م یشویم. در فصل بعد، سعی می کنیم که کلا سهای مربوط به این کنتر لها را با جزئیات بیشتری

بررسی کنیم.

DataSet

در حقیقت همانند یک مخزن است که داده های مورد نیاز را در حافظ هی کامپیوتر نگهداری می کند. این Dataset کنترل

کنترل همانند یک موتور بانک اطلاعاتی کوچک عمل می کند که داده های مورد نیاز خود را در حافظه نگهداری م یکنند. با

که در فصل بعدی DataView استفاده از این کنترل م یتوانید داده ها را درون جدول هایی نگهداری کرده و سپس از کنترل

توضیح داده خواهد شد. به چندین روش پرس وجوهایی را روی این داد هها اجرا کنید.

از قدرت و امکانات زیادی برخورددار است. این کنترل علاو هبراین، توانایی ذخیر هی داده ها در جدول، حجم DataSet کنترل

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

جدول ها و یا فیلدها، نوع داده های موجود، اطلاعات مورد نیاز برای مدیریت داده ها و یا اطلاعاتی در رابطه با لغو کردن

تغییرات اعمال شده در داد هها می باشد.

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

393

XML می تواند به سادگی در قالب DataSet در حافظه ذخیره می شوند. به علاوه، یک کنترل XML تمام این اطلاعات در قالب

از XML از دیسک در حافظه قرار داده شود. همچنین این کنترل م یتواند به صورت XML در دیسک ذخیره شده و یا از قالب

طریق شبکه های مختلف مانند اینترنت به برنامه های دیگر فرستاده شود و مورد استفاده قرار گیرد.

در حافظه قرار دارند، بنابراین می توانید به سادگی در بین آنها به جلو و یا عقب DataSet به علت اینکه داده های یک کنترل

حرکت کنید و یا در آنها تغییراتی را ایجاد کنید. البته این تغییرات در داد ههای موجود در حافظه اعمال می شوند و تا زمانی

که مشخص نکنید به داد های موجود در بانک اطلاعاتی منعکس نخواهند شد. در مورد این کنترل در فصل بعد بیشتر صحبت

خواهیم کرد. اما در این فصل فقط داده هایی را در آن قرار داده و سپس به وسیله ی کنترل های دیگری آن داده ها را در برنامه

نمایش خواهیم داد.

DataGridView

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

به منبع داده های خود، برای مثال یکی ازجدولهای موجود در بانک اطلاعاتی، متصل کرده و سپس این کنترل را تنظیم کنید

تا آن داده ها را همانند یک جدول، یعنی ستو نها را به صورت عمودی و ردی فها را به صورت افقی نمایش دهد.

همچنین این کنترل دارای خاصیتهای زیادی است که به وسیله ی آنها می توانید ظاهر آن را تنظیم کنید تا به شکلی که مد

نظر شماست تبدیل شود. علاوه براین، به وسیل هی این کنترل م یتوانید عنوان ستونهای داد هها و یا روش نمایش آنها نیز

تعیین کنید.

BindingSource

و نیز کنترل هایی که برای (DataSet) این کنترل همانند پلی برای ایجاد ارتباط بین داد ههای موجود در منبع داد های شما

نمایش داد هها مورد استفاده قرار می گیرند به کار می رود. بنابراین، هنگامی که بخواهید به وسیله ی کنترل هایی داده های

موجود در برنامه ی خود را نمایش دهید، و یا به هر دلیل دیگری بخواهید به آنها در منبع اطلاعاتی دسترسی داشته باشید،

این ارتباط باید از طریق این کنترل صورت بگیرد.

در فرم برنامه DataGridview را به وسیل هی یک کنترل DataSet برای مثال تصورکنید که داد ههای موجود در یک

نمایش داده اید و حال می خواهید این داده ها براساس یکی از ستونها مرتب شده و سپس نمایش داده شوند. برای این کار

DataSet می فرستد و سپس این کنترل آن را به کنترل Bindingsource این تقاضا را به کنترل DataGridView کنترل

اعلام می کند. در ادامه ی این فصل با نحو هی استفاده از این کنترل بیشتر آشنا خواهیم شد.

BindingNavigator

یک رابط گرافیکی استاندارد را برای حرکت بین رکوردهای موجود در یک بانک اطلاعاتی BindingNavigator کنترل

نمایش داده می شود. این کنترل Access ایجاد می کند. این کنترل بسیار مشابه کنترلی است که در پایین جدول در برنامه

متصل شده و از طریق آن به داد ههای موجود در BindingSource می تواند به کنترل DataGridView نیز همانند کنترل

در این کنترل کلیک کردید تا به رکورد Next برنامه دسترسی داشته باشد. به این ترتیب، برای مثال هنگامی که روی کلید

فرستاده شده BindingSource به کنترل BindingNavigator بعدی اطلاعات بروید، درخواست شما به وسیله ی

و یا منبع اطلاعاتی دیگر که در برنامه از آن استفاده می کنید) ) DataSet به کنترل BindingSource وسپس از کنترل

اعلام می شود.

TableAdapter

این کنترل در جعبه ابزار .DataAdapter تنها یک کنترل داده ای دیگر مانده است که باید در مورد آن صحبت کنیم: کنترل

وجود ندارد که بتوانید آن را همانند کنترل های قبلی بر روی فرم قرار دهید. بلکه بسته به روشی که کنترل های داده ای دیگر

را در برنامه قرار داده و آنها را تنظیم می کنید، این کنترل به صورت اتوماتیک ایجاد می شود.

mohsen_mahyar@yahoo.com - C# برنامه نویسی

394

این کنترل حاوی پرس وجو هایی برای انتخاب داده های موجود در بانک اطلاعاتی و نیز اطلاعاتی در مورد نحوه ی اتصال برنامه

به بانک است. همچنین این کنترل حاوی متدهایی است که به وسیله ی آنها می توان داده ها را از جداول بانک اطلاعاتی

قرار داد و سپس در برنامه از آن داده ها استفاده کرد. این کنترل این قابلیت را DataSet بدست آورد و در کنتر لهایی مانند

،UPDATE ای که برای انتخاب داده ها از بانک اطلاعاتی برای آن وارد م یکنید دستورات SELECT دارد که براساس دستور

مناسب برای داده های انتخاب شده در بانک اطلاعاتی ایجاد کند. DELETE و نیز INSERT

درفصل بعد بیشتر با این کنترل آشنا خواهیم شد.

-3-22 مقید کردن داده ها

به آنها دسترسی دارید را به BindingSource مقید کردن داد هها به این معنی است که داد ههایی که به وسیله ی کنترل

یک کنترل خاص نسبت دهید. به عبارت دیگر کنترل را بتوانید به نحوی تنظیم کنید که داده های مورد نیاز خود را به

وسیله ی کنترل های دسترسی داده ها در برنامه دریافت کند و سپس آنها را به صورت اتوماتیک به کاربر نمایش دهد. به این

تقریبا" تمام کنترل ها تا #VC ترتیب کاربر می تواند آنها را مشاهده کرده و یا تغییرات موردنظر خود را در آنها اعمال کند، در

حدی اتصال به داده ها را پشتیبانی می کنند، اما بعضی از کنتر لها نیز وجود دارند که مخصوص این کار طراحی شده اند، مانند

به آنها دسترسی BindingSource در مثال بعدی اطلاعاتی که به وسیل هی کنترل .TextBox و یا DataGridView کنترل

متصل کرده و به وسیل هی این کنترل نمایش می دهیم. در بخش بعد نیز این اطلاعات را DataGridview داریم را به کنترل

در برنامه نمایش خواهیم داد. TextBox به وسیله ی کنترل

DataGridView 1- مقیدکردن داده ها به کنترل - مثال 22

ایجاد Northwind Customers DataGridview 2005 یک برنامه ی ویندوزی جدید به نام VS 1) با استفاده از

کنید.

دو بار کلیک کرده تا یک DataGridview بروید و سپس روی کنترل Data 2) با استفاده از جعبه ابزار به قسمت

به صورت اتوماتیک DataGridView Tasks نمونه از این کنترل روی فرم برنامه قراربگیرد. به این ترتیب کادر

3 نمایش داده خواهند شد. - همانند شکل 22

3- شکل 22

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

395

کلیک کرده و سپس در این لیست روی لینک Choose DataSource 3) در این کادر، در لیست روبروی عبارت

DataSource Configuration Wizard کلیک کنید. به این ترتیب ویزارد Add Project DataSource

نمایش داده خواهد شد.

می توانید منبع داده ای مورد نظر Choose a DataSource Type 4) در صفح هی اول این ویزارد، یعنی پنجره ی

4 نیز مشاهده می کنید، در این قسمت می توانید انواع مختلفی از - خودتان را انتخاب کنید. همانطور که در شکل 22

منبع ____________های داده ای را مشخص کرده و به آنها متصل شوید. برای مثال، اگر می خواهید به یک بانک اطلاعاتی که توسط

و یا .... ایجاد می شود دسترسی داشته باشید، روی SQL Server ،Oracle ،Access نرم افزارهای مختلفی مانند

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

نیز برای دسترسی به کنترل های داده ای در لایه ی منطق objects کلیک کنید. آیکون Web Service آیکون

تجاری به کار می رود.

کلیک کنید. Next را انتخاب کرده و سپس روی دکم هی Database در این قسمت آیکون

4- شکل 22

کلیک کنید. New Connection روی دکمه ی Choose Your Data Connection 5) در پنجر هی

Microsoft نمایش داده خواهد شد. در این پنجره گزین هی Choose DataSource 6) به این ترتیب پنجر هی

کلیک کنید. Continue انتخاب کرده و روی دکم هی DataSource را از لیست Access Database file

در مکان نصب samples کلیک کرده و سپس به پوشه ی Browse روی دکمه ی Add Connection 7) درکادر

C:\Program 2003 در آدرس office بروید. این پوشه به صورت پیش فرض برای office برنامه ی

را Northwind.mdb قرار دارد. در این آدرس فایل Files\Microsoft Office\ Officell\Samples

Add کلیک کنید تا نام و مسیر فایل انتخابی به کادر متنی موجود در پنجره ی OK انتخاب کرده و سپس روی دکمه ی

Add Connection کلیک کنید تا کادر OK اضافه شوند. سپس در این پنجره نیز روی دکمه ی Connection

Next برگردید. در این پنجره نیز روی دکمه ی Choose Your Data Connection بسته شود و به پنجره ی

کلیک کنید.

mohsen_mahyar@yahoo.com - C# برنامه نویسی

396

به این ترتیب کارد پیغام نمایش داده خواهد شد و از شما می پرسد که فایل بانک اطلاعاتی که انتخاب کرد هاید

جزئی از پروژه نیست. آیا می خواهید این فایل به پوش هی پروژه کپی شده و از نسخ هی کپی آن استفاده شود؟ در

کلیک کنید. YES این کادر روی دکمه ی

Save the ConnectionString on the Application Configuration 8) به این ترتیب پنجره ی

کلیک کنید. Next نمایش داده می شود. در این پنجره نیز روی دکمه File

نمایش داده می شود و به شما اجازه می دهد تا Choose Your Data Objects 9) بعد از طی این مراحل پنجره ی

داده های مورد نیاز در برنامه را انتخاب کنید. در این قسمت م یتوانید انتخاب کنید که داده های مورد نیاز شما از یک

جدول درون بانک اطلاعاتی وارد برنامه شوند، با اجرای پروسیجرهای ذخیره شده در بانک اطلاعاتی ایجاد شده و

در اختیار برنامه قرار بگیرند و یا از روشهای دیگر موجود برای گردآوری داد ههای مورد نیاز استفاده شود.

کلیک کرده و سپس Views بنابراین در لیست نمایش دهند هی اشیای موجود در بانک اطلاعاتی روی علامت مثبت کنار

4گزینه ی مورد نظر را انتخاب کنید. اگر روی علامت مثبت کنار آن کلیک کنید، - ازلیست باز شده همانند شکل 22

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

کلیک کنید تا کار در این قسمت به اتمام برسد. (فرض کنید نام گزین هی انتخاب شده finish صفحه روی دکمه ی

است). CustomerQuery

به نام BindingSource یک شی از نوع ،NorthWindDataSet به نام DataSet در این لحظه، ویزارد یک شی از نوع

CustomerQueryTableAdapter به نام TableAdapter و نیز یک شی از نوع CustomerQueryBindingSource

ایجاد می کند.

5- شکل 22

نمایش DataGridView Tasks کلیک کرده تا کادر DataGridView -10 در فرم اصلی برنامه روی مثلث کوچک کنار

داده شود. به این علت که در این قسمت نمی خواهیم داده های موجود را حذف کرده، اضافه کنیم و یا تغییر دهیم، با کلیک

علامت تیک کنار آنها را حذف کنید. اما Enable Deleting و Enable Editing ،Enable Adding روی گزینه های

Enable Column می خواهیم که بتوانیم داده ها را براساس ستو نهای مورد نظر مرتب کنیم. پس روی گزینه ی

کلیک کنید تا انتخاب شود. سپس در قسمتی از نوار عنوان فرم برنامه کلیک کنید تا این پنجره پنهان شود. Reoerdering

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

397

Fill آن را به Dock خاصیت Properties کلیک کرده و سپس با استفاده از پنجر هی DataGridView -11 روی کنترل

تغییر دهید.

به وسیله ی اطلاعات موجود در بانک اطلاعاتی پر DataGrid -12 حال برنامه را اجرا کنید. مشاهده خواهید کرد که کنترل

خواهد شد.

با کلیک روی نام هر یک از ستو نهای موجود در جدول،م یتوانید اطلاعات را بر اساس آن ستون به صورت صعودی مرتب

کنید. کلیک مجدد روی هر ستون باعث می شود که اطلاعات بر اساس آن ستون به صورت نزولی مرتب شوند. برای تشخیص

نحوه ی مرتب شدن اطلاعات نیز می توانید از جهت مثلث کوچکی که در کنار نام ستون نمایش داده می شود استفاده کنید.

همانطور که مشاهده می کنید در این قسمت توانستید بدون اینکه حتی یک خط کد در برنامه وارد کنید داد ههایی را از یک

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

ویزارد نوشته شده اند.

TextBox 2- مقید کردن داده ها به کنترل - مثال 22

ایجاد کنید. Northwind Customers BindingNavigator یک برنامه ی ویندوزی جدید به نام VS -1 با استفاده از

به برنامه ی خود اضافه کنید. سپس خاصیت ها و مکان TextBox و سه کنترل Label -2 با استفاده از کادر ابزار سه کنترل

5 شود. - این کنترل ها را به گون های تغییر داده و تنظیم کنید که فرم برنامه مشابه شکل 22

12- شکل 22

روی علامت Properties اول کلیک کنید تا انتخاب شود. سپس با استفاده از پنجر هی TextBox -3 در فرم برنامه روی

را انتخاب Text این کنترل کلیک کنید. در لیستی که نمایش داده می شود، خاصیت (DataBindings) مثبت کنار خاصیت

6 نمایش - همانند شکل 22 DataSource کرده و روی علامت مثلث کوچک مقابل آن کلیک کنید. به این ترتیب پنجره ی

DataSource کلیک کنید. تا ویزارد …Add Project DataSource داده م یشود. در این پنجره روی لینک

1 مشاهده کرده بودید نمایش داده شود. - همانند آنچه در مثال 22 ،Configuration Wizard

6- شکل 22

mohsen_mahyar@yahoo.com - C# برنامه نویسی

398

کلیک کنید. Next را انتخاب کرده و روی کلید DataBase آیکن Choose a DataSource Type -4 در پنجر هی

Add کلیک کنید تا کادر New Connection روی دکمه ی Choose Your Data Connection -5 در پنجره ی

نمایش داده شود. Connection

را انتخاب کنید و NorthWind کلیک کرده و سپس پایگاه داد هی Browse روی دکمه ی Add Connection -6 در کادر

کلیک کنید. Next روی

به این ترتیب کارد پیغامی نمایش داده خواهد شد و به شما می گوید که فایل بانک اطلاعاتی جزئی از پروژه نیست. آیا

را انتخاب کنید. Yes می خواهید این فایل به پوشه پروژه کپی شود و از نسخ هی کپی آن استفاده شود. شما

نیز روی Save the Connection String to the Application Configuration File -7 در پنجر هی

کلیک کنید. Next دکمه ی

قرار دارد، در لیست Tables روی علامت مثبت که در سمت چپ ،Choose Your DataBase Objects -8 در پنجره ی

Customers نمایش داده می شود روی گزینه ی Tables کلیک کنید. سپس در لیستی که برای Database Objects

،CompanyName کلیک کرده تا فیلدهای این جدول نیز نمایش داده شوند. در پایان نیز با کلیک کردن روی فیل دهای

کلیک کنید. Finish آنها را انتخاب کرده و سپس روی کلید ContactTitle و ContactName

قرار دارد کلیک کنید. این بار Text روی علامت مثلث کوچک که در مقابل خاصیت Properties -9 مجددا در پنجر هی

Other 7 نمایش داده م یشود. به ترتیب روی علامت مثبت کنار گزینه های - همانند شکل 22 DataSource پنجره ی

کلیک کنید. Customers و در آخر نیز NorthwindDataSet ،Project Data Sources ،Data Sources

در این Text در این قسمت کلیک کنید. به این ترتیب کادر بسته شده و خاصیت CompanyName حال روی فیلد

متصل خواهد شد. DataSet در کنترل CompanyName به فیلد TextBox

7- شکل 22

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

399

در پنجره ی DataBindings دوم را از فرم برنامه انتخاب کرده و سپس با استفاده از قسمت TextBox -10 کنترل

را به این کادر اختصاص دهید. ContactName کلیک کنید و مشابه قسمت قبل، فیلد Text روی خاصیت Properties

سوم نیز انتخاب کرده و فیلد سوم را به آن متصل کنید. TextBox -11 مراحل قبل را برای

دوبار کلیک کرده تا یک نمونه از آن در BindingNavigator بروید و روی کنترل Data -12 حال در کادر ابزار به قسمت

فرم قرار بگیرد. این کنترل بطور اتوماتیک به بالای فرم برنامه متصل خواهد شد.

را برابر با BindingNavigator کنترل BindingSource خاصیت Properties -13 با استفاده از پنجر هی

قرار دهید. CustomersBindingSource

8 نمایش داده خواهد شد. به وسیل هی - -14 حال برنامه را اجرا کنید. مشاهده خواهید کرد که فرم برنامه همانند شکل 22

این فرم می توانید بین رکوردهای موجود در بانک اطلاعاتی جا به جا شوید. برای مثال به رکورد بعدی و یا رکورد قبلی بروید.

همچنین کلیدهایی نیز وجود دارند که به وسیل هی آنها می توانید به اولین و یا آخرین رکورد کوجود منتقل شوید.

حذف خواهد شد، اما توجه کنید که این رکورد DataSet یکی از رکوردهای موجود در Delete با کلیک کردن روی دکمه ی

نیز باعث می شود یک رکورد جدید New حذف می شود نه از بانک اطلاعاتی. همچنین کلیک کردن روی دکمه ی DataSet از

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

مقداری کد در برنامه وارد کنید.

8- شکل 22

mohsen_mahyar@yahoo.com - C# برنامه نویسی

400

خلاصه

برای شما معرفی شد. که مهمترین آنها SQL در این فصل با مفهوم بانک اطلاعاتی آشنا شدید و تعدادی از دستورهای

می باشد. SELECT

سپس به بررسی نحوه ی استفاده از داده های موجود در یک بانک اطلاعاتی در یک برنام هی ویندوزی پرداختیم و مشاهده

متصل کرد. با تعدادی از TextBox و یا DataGridView کردیم که چگونه م یتوان اطلاعات را به کنترل هایی مانند

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

2005 داده های موجود در یک بانک VS در این فصل مشاهده کردید که چگونه می توان با استفاده از ویزاردهای موجود در

اطلاعاتی را به سرعت به کنتر لها ی موجود در فرم متصل کرد. اما در شرایطی ممکن است نیاز به کنترل بیشتر روی نحو هی

ارتباط با بانک اطلاعاتی و یا نحو هی متصل شدن کنترل ها به داده ها داشته باشید. در فصل بعد سعی خواهیم کرد که خط

مشی متفاوتی را نسبت به این فصل پیش گرفته و سعی کنیم با استفاده از برنامه نویسی، کنتر لهای یک فرم را به داد ههای

موجود در یک بانک اطلاعاتی متصل کنیم. همچنین با کنترل های دسترسی به داده ها بهتر آشنا خواهیم شد و مشاهده

خواهیم کرد که چگونه م یوان از خاصی تها و یا متدهای آنها در برنامه استفاده کرد.

 

 

mohsen_mahyar@yahoo.com - C# برنامه نویسی

 

   + MOHSEN GHASEMI - ۱٢:٢٢ ‎ق.ظ ; ۱۳۸٩/٤/۳٠