آموزش SqlDependency در WPF (سی شارپ) برای آپدیت خودکار داده های جدول

  • سه شنبه ۶ آذر ۱۳۹۷
  • بازدید ۲,۵۰۱ نفر

تصویر sqldependency-training-in-wpf-csharp_4845 آموزش SqlDependency در WPF (سی شارپ) برای آپدیت خودکار داده های جدول

آموزش SqlDependency در WPF (سی شارپ)

گاهی اوقات در برنامه نویسی و کار با دیتابیس ممکن است وضعیتی پیش آید که نیاز باشد تا برنامه از تغییر اطلاعات موجود در جداول با خبر شود. در این مواقع یک راه این است که خودتان یک تایمر برای بررسی وضعیت داده های موجود ایجاد کنید تا در یک فاصله زمانی مشخص، جدول مورد نظر را بررسی کند. اما راه بهتری نیز وجود دارد و آن هم استفاده از قابلیت موجود در Sql Server  به نام SQL Dependency است. این ویژگی برنامه شما را قادر می سازد تا از تغییرات بوجود آمده در دیتابیس بدون استفاده از تایمر و یا حلقه، با خبر شود. در این مقاله نحوه استفاده از این ویژوگی SqlDependency در Sql Server برای آپدیت خودکار داده های جدول آموزش خواهیم داد.

نحوه استفاده SqlDependency

مراحل زیر نحوه تعریف یک dependency، اجرای یک Command و دریافت اعلان هنگام تغییر اطلاعات در دیتابیس را نشان می دهد:

  • برقراری اتصال SqlDependency با دیتابیس
  • ایجاد شیء SqlConnection و SqlCommand برای کار با دیتابیس
  • اتصال شیء SqlDependency به یک SqlCommand
  • ایجاد یک handler برای رویداد OnChange شیء SqlDependency
  • اجرای Command با یکی از متدهای Execute موجود در شیء SqlCommand
  • توقف اتصال SqlDependency به دیتابیس

مراحل زیر مربوط به نرم افزار Sql Server می باشد:

  • ایجاد یک QUEUE
  • ایجاد یک SERVICE
  • فعال سازی Service Broker

کد زیر هر سه مورد بالا را انجام می دهد:

در کد بالا به جای DatabaseName نام دیتابیس برنامه، به جای QueueName نام Queue، ServiceName نام Service و به جای YourUserName نام کاربری که با آن به دیتابیس متصل می شوید را وارد کنید. بعد از اجرای دستورات بالا در Query نرم افزار SQL Server گزینه های زیر به بخش دیتابیس شما اضافه خواهد شد.

تصویر sqldependency-training-in-csharp_4845_3 آموزش SqlDependency در WPF (سی شارپ) برای آپدیت خودکار داده های جدول

بعد از پیاده سازی مراحل بالا، هر تغییراتی که در دیتابیس ایجاد شود، رویداد OnChange شیء SqlDependency فراخوانی می شود. در ادامه مراحل بالا را با یک مثال و فیلم توضیح خواهیم داد.

مثال (استفاده از SqlDependency در WPF) :

برای یاد گیری بهتر به نمونه برنامه با WPF توجه کنید. این مثال شامل دو عدد TextBox با نام های TxtFullName و TxtPhoneNumber، یک عدد Button با نام BtnInsert و یک عدد DataGrid با نام DgCustomers می باشد. در برنامه زیر اطلاعات (نام و شماره تلفن مشتری) را از کاربر می گیرد و در دیتابیس SQL Server ثبت می کند. سپس برنامه به وسیله SqlDependency به صورت خودکار متوجه تغییرات بوجود آمده می شود و متد BindCustomers را فراخوانی می کند تا DataGrid را آپدیت کند.

تصویر sqldependency-training-in-csharp_4845_1 آموزش SqlDependency در WPF (سی شارپ) برای آپدیت خودکار داده های جدول

فایل های موجود در پروژه

تصویر sqldependency-training-in-csharp_4845_2 آموزش SqlDependency در WPF (سی شارپ) برای آپدیت خودکار داده های جدول

محتوای فایل MainWindow.xaml

محتوای فایل MainWindow.xaml.cs

توضیحات مثال

دستور زیر برای شروع اتصال SqlDependency با دیتابیس می باشد:

متد زیر برای اتصال شیء SqlDependency به یک SqlCommand استفاده می شود:

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

این رویداد زمانی که تغییری در داده های موجود بوجود آید، فراخوانی می شود:

دستور زیر برای قطع اتصال SqlDependency با دیتابیس می باشد:

استفاده از SqlDependency در سی شارپ :

برای استفاده از SQL Dependency در WinForms به زبان سی شارپ از  کدهای گفته شده در بخش بالای می توانید استفاده کنید فقط باید محتوای رویداد OnChange را به شکل زیر تغییر دهید:

 

نکته! قبل از نام جدول در کوئری خود، حتما باید از dbo (برای مثال dbo.Customers) استفاده کنید. در غیر این صورت رویداد OnChange به صورت بی نهایت اجرا می شود و این موضوع باعث قفل شدن UI برنامه خواهد شد.

 

باکس دانلود
مطالب مرتبط
تفاوت WPF با Windows Forms چیست

بازدید ۷۲۹۲ نفر
ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است