در بخش ششم در مورد تکنولوژی های بانک اطلاعاتی در سی شارپ مطالبی ارائه شد . در این بخش روش ایجاد اتصال به بانک اطلاعاتی SQL Server را در سی شارپ آموزش داده و با تعریف یک دیتاست (DataSet) جداول بانک اطلاعاتی را به آن اضافه می کنیم. این بخش اولین اساسی ترین گام در برنامه نویسی بانک اطلاعاتی در سی شارپ به حساب می آید.
فیلم های آموزشی برنامه نویسی بانک اطلاعاتی با سی شارپ
مروری بر دستورات مهم SQL
قبل از شروع برنامه نویسی بانک اطلاعاتی در سی شارپ لازم است مقدمه ای گفته شود تا با دستورات مهم SQL که در برنامه نویسی لازم خواهید داشت آشنا شوید. برای اجرای عملیات مختلف روی بانک اطلاعاتی، سی شارپ دارای امکانات مختلفی است. این امکانات و ابزارها در نهایت باید دستورSQL مناسب را به سرویس دهنده داده ارسال کنند تا اجرا شود. دستوراتی که در این درس به آنها نیاز داریم عبارتند از :
SELECT– بازیابی اطلاعات از یک یا چند جدول
INSERT– درج سطر جدید
DELETE– حذف سطرها
UPDATE– بروزآوری (اصلاح) سطرها
دستور SELECT
شکل کلی :
SELECT نام ستون ها FROM نام جداول WHERE عبارت شرطی
بازیابی کل سطرها وستون های جدول studs
SELECT * FROM tbl_studs
بازیابی شماره دانشجویی و نام همه دانشجویان
SELECT id , name FROM tbl_studs
بازیابی دانشجویانی که کد رشته آنها مساوی1 است.
SELECT * FROM tbl_studs WHERE fid=1
دستور INSERT
INSERT INTO tablename( column1, column2,… )
VALUES ( value1,value2,… );
مقادیر از نظر تعداد و نوع داده باید متناظر با ستونها باشند.اگر قصد مقداردهی تمام ستون های جدول را داریم لازم نیست نام ستونها ذکر شود و لازم است مقادیر به ترتیبی که ستونهای جدول هستند نوشته شوند.
INSERT INTO tablename VALUES ( value1,value2,… );
با فرض اینکه sid ازنوع Auto-Increment (خود افزایشی)است. می توان برای آن مقدار صفر برای آن تعیین کرده، یا مقدار آنرا ذکر نکنیم:
INSERT INTO tbl_studs VALUES ( 0,’ali’,17,1 );
INSERT INTO tbl_studs(name,avgr,fid) VALUES ( ‘reza’ , 17 , 1 ) ;
دستورDELETE
برای حذف یک یا چند سطر از جدول استفاده می شود:
DELETE FROM نام جدول WHERE عبارت شرطی
مثال:حذف دانشجویی با شماره ی دانشجویی 10
DELETE FROM tbl_studs WHERE sid=10
حذف دانشجویان با معدل کمتر از 10
DELETE FROM tbl_studs WHERE avgr>10
7-1-4- دستور UPDATE
این دستور برای بروز رسانی یک یا چند سطر از جدول، بصورت زیر اجرا می شود:
UPDATE نام جدول SET ستون1 = مقدار1 , ستون 2 = مقدار 2 , ….
WHERE عبارت شرطی
اصلاح مشخصات دانشجویی با شماره ی دانشجویی 100
UPDATE tbl_studs SET fid=2 , name=’sara’ , avgr=17.5 WHERE sid=100
به معدل دانشجویان رشته2 ، یک نمره اضافه کند
UPDATE tbl_studs SET avgr=avgr + 1 WHERE fid=2;
ساختار بانک اطلاعاتی amoozesh
در تمام بخش های آموزش برنامه نویسی بانک اطلاعاتی در سی شارپ ، فرض شده که بانک اطلاعاتی نمونهamoozesh در محیط SQL Server ایجاد شده و دارای جداول رشته ها، دانشجویان، دروس و نمرات بصورت زیر است . برای اجرای برنامه های نوشته شده در این بخش و بخش بعد باید بانک اطلاعاتی آموزش موجود باشد. همچنین دقت شود که کلیدهای اصلی در هر جدول بصورت خودافزایشی (identity) تنظیم شده اند.
ایجاد اتصال به بانک اطلاعاتی
با استفاده از پنجره Server Explorer در محیط سی شارپ، می توان به بانک های اطلاعاتی مختلف، اتصال ایجاد کرد و یا حتی بانک اطلاعاتی جدید برای SQL Server ایجاد نمود. برای نمایش این پنجره از دستور View | Server Explorer استفاده می کنیم.
در پنجره Server Explorer با کلیک راست روی Data Connections و اجرای Add Connection و سپس انتخاب Microsoft SQL Server(SqlClient)به عنوان Data Source و تعیین نام سرویس دهنده SQL، اطلاعات لاگین و انتخاب بانک اطلاعاتی یا انتخاب فایل بانک اطلاعاتی برای الحاق به SQL Server ، می توان اتصال به آن ایجاد کرد.
پس از تعیین نام یا آدرس سرویس دهنده SQL و انتخاب بانک اطلاعاتی، برای اطمینان از درستی اتصال روی دکمه Test Connection کلیک کنید تا پیغام موفقیت را ببینیم.
با تائید کادر فوق( کادر Add Connection )در پنجره Server Explorer یک اتصال به بانک اطلاعاتی دیده خواهد شد که بصورت درختی اجزای مختلف بانک را نمایش می دهد.
در پوشه Tables لیست جداول بانک اطلاعاتی دیده می شود و برای هر جدول، لیست ستون های آن نیز مشاهده می شود.
با کلیک راست روی هر جدول گزینه هایی برای مدیریت جدول از جمله اصلاح ساختار و مدیریت داده های مثل حذف، درج یا اصلاح سطرهای آن فراهم شده است .
افزودن دیتاست به پروژه
آیتم DataSet برای شبیه سازی بانک اطلاعاتی در سی شارپ و نگهداری داده ها بصورت محلی استفاده می شود. این ابزار دارای مجموعه ای از DataTable ها است که هر کدام می توانند محتوای یک جدول از بانک اطلاعاتی را نگهداری کنند. حتی ارتباط بین جداول بانک اطلاعاتی را می توان در بااستفاده از دیتاست تعریف کرده و از آنها در مدیریت داده ها استفاده کرد.
استفاده از دیتاست به برنامه نویس امکان می دهد تا بدون درگیر شدن با کلاس های فراهم کننده داده ، بتواند برنامه بانک اطلاعاتی بنویسد و تقریباً هر نوع عملی روی بانک اطلاعاتی انجام دهد. در ادامه به شرح چگونگی این کار با انجام عملیات روی بانک اطلاعاتی آموزش می پردازیم.
بعداز ایجاد پروژه جدید ، برای افزودن دیتاست به پروژه، در پنجره Solution Explorer، روی پروژه کلیک راست کرده و گزینه Add | New Item را اجرا می کنیم . در کادر باز شده آیتم DataSet را به پروژه اضافه می کنیم تا یک صفحه هاشورخورده دیده شود. حال می توانیم از پنجره Server Explorerهمه جداول را به داخل این صفحه دراگ و دراپ کنیم.
همان طور که در شکل فوق دیده می شود، با اضافه کردن جداول به دیتاست، بازای هر جدول یک DataTable اضافه شده و ارتباط بین آنها نیز به دیتاست اضافه می شود. هر جدول دارای دو بخش ستون های جدول و یک دیتا آداپتور شامل متدهایی برای دستکاری داده ها می باشد و با کلیک راست روی هر جدول گزینه هایی برای مدیریت جدول در دسترس است.
به طور پیش فرض برای هر جدول یک متد Fill یا GetData اضافه می شود. وظیفه این متد، خواندن تمام سطرهای جدول اصلی در بانک اطلاعاتی و پرکردن این جدول در دیتاست است.
برنامه نویس می تواند متدهای دیگری برای خواندن رکوردها بصورت فیلتر شده یا حذف، ویرایش یا افزودن رکورد به بانک به هر جدول اضافه کند. هر کدام از این متدها وظیفه اجرای یک دستور به زیان SQL روی بانک اطلاعاتی و برگرداندن نتیجه را انجام می دهند. پس برای ساخت متد باید با زبان SQL آشنایی مقدماتی داشته باشیم. در ادامه به معرفی چهار دستور اصلی زبان SQLو ارائه مثال هایی روی بانک اطلاعاتی amoozeshمی پردازیم.
افزودن عملیات به DataAdapter
هر جدول در دیتاست دارای یک متد پیش فرض بنام Fill() یا GetData() است که وظیفه خواندن کل اطلاعات جدول بانک اطلاعاتی و پرکردن جدول دیتاست را انجام می دهد. برای اضافه کرده متدها (پرس و جوها) ی دیگر، روی قسمت DataAdopter از شمایل جدول tbl_studs کلیک راست کرده و گزینه Add Query را اجرا می کنیم تا ویزارد باز شود.
در اولین گام، نوع پرس و جو را انتخاب می کنیم:
- استفاده از دستور SQL
- ساخت روال ذخیره شده
- استفاده از روال ذخیره شده موجود
با انتخاب دستور SQL در مرحله اول ، در مرحله دوم باید نوع دستور را انتخاب کنیم:
- دستور SELECT برای برگرداندن سطرها
- دستور SQL برای برگرداندن یک مقدار (پرس و جوی تجمعی)
- دستور UPDATE برای اصلاح
- دستور DELETE برای حذف
- دستور INSERT برای درج سطر جدید
با انتخاب نوع دستور، در مرحله سوم یک دستور SQL بصورت خودکار تولید شده و نمایش داده می شود که البته قابل ویرایش و بازنویسی بصورت دلخواه است. همچنین با کلیک روی دکمه Query Builder می توان بصورت ویژوالQuery دلخواه را ایجاد کرد.
برای محدود کردن پرس و جو (فیلتر کردن) به ادامه دستور SELECT می توان بخش WHERE را اضافه کرد:
SELECT * FROM tbl_studs WHERE sid=@sid
تا مشخصات دانشجوی با شماره دانشجویی تعیین شده را بدست آورد. در اینجا @sid تعیین کننده پارامتری است که هنگام اجرا باید تعیین شود.
در ساخت پرس و جو، پارامترها با علامت @ مشخص می شوند.
اگر دستور انتخاب شده Select باشد، در مرحله بعد، نام پیشفرض دو متد نمایش داده می شود که به دلخواه تغییر می کند. همچنین می توان هر دو یا یکی از آنها را ایجاد کرد.
- تابع FillBy() : برای دریافت یک DataTable به عنوان پارامتر و پرکردن آن با اجرای دستور پرس و جو
- تابع GetDataBy() : برای ایجاد یک DataTable جدید، پرکردن آن با اجرای پرس وجو و برگرداندن آن
نام این توابع را می توان به دلخواه تغییر داد، مثلاً اگر هدف بازیابی مشخصات دانشجو براساس شماره دانشجویی است می توان اسامی زیر را تعیین کرد:
FillBySid() , DetGataBySid()
عد از پایان یافتن ویزارد، یک متد جدید به بخش DataAdapter جدول اضافه شده است.
متد جدید GetDataBySid() نام دارد و برای فراخوانی نیاز به یک مقدار برای پارامتر @sid خواهد داشت. این متد می تواند برای بازیابی مشخصات یک دانشجو جهت نمایش یا ویرایش فراخوانی شود.
لیست کامل پرس و جوها
برای انجام عملیات مختلف روی هر جدول نیاز به متدهای جدیدی است که باید با انجام مراحل فوق ایجادکنیم. بعنوان مثال برای جدول دانشجویان نیاز به متدهای زیر داریم:
بازیابی مشخصات تمام دانشجویان | |
متد | GetData() , Fill() |
دستور SQL | SELECT * FROM tbl_studs |
بازیابی مشخصات دانشجو براساس شماره دانشجویی | |
متد | GetDataBySid(@sid) , FillBySid(@sid) |
دستور SQL | SELECT * FROM tbl_studs WHERE sid=@sid |
بازیابی مشخصات دانشجویان براساس کلیدخارجی کد رشته | |
متد | GetDataByFid(@fid) , FillByFid(@fid) |
دستور SQL | SELECT * FROM tbl_studs WHERE fid=@fid |
درج سطر جدید | |
متد | InsertRow(@name,@avgr,@fid) |
دستور SQL | INSERT INTO tbl_studs(name,avgr,fid) VALUES(@name,@avgr,@fid) |
حذف سطربر اساس شماره دانشجویی | |
متد | DeleteRow(@sid) |
دستور SQL | DELETE FROM tbl_studs WHERE sid=@sid |
ویرایش یک سطر | |
متد | UpdateRow(@name,@avgr,@fid,@sid) |
دستور SQL | UPDATE tbl_studs SET name=@name,avgr=@avgr,fid=@fid WHERE sid=@sid |
پس از اضافه کردن متدهای فوق شمایل tbl_studs بصورت مقابل خواهد بود که برای دیگر جداول هم باید متدهایی مشابه این جدول اضافه شود.
[purchase_link id=”1041″ style=”button” color=”green” text=”خرید”]
در این بخش اتصال برنامه را به بانک اطلاعاتی در سی شارپ برقرار کرده و با استفاده از دیتاست توانستیم برای عملیات مختلف روی جداول پرس و جوهایی تعریف کنیم.