وباکا

آموزش تخصصی برنامه نویسی وب

بانک اطلاعاتی با سی شارپ – 7# اتصال به بانک اطلاعاتی با استفاده از دیتاست

در بخش ششم در مورد تکنولوژی های بانک اطلاعاتی در سی شارپ مطالبی ارائه شد . در این بخش روش ایجاد اتصال به بانک اطلاعاتی 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=”خرید”]

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

 

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

فهرست مطالب