منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : رقابة قاعدة البيانات (التحديث التلقائي للبيانات ) SqlDependency
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم اخواني الاعزاء .
اقدم لكم مثال عن التحديث التلقائي لقاعدة البيانات عبر تقنيه SqlDependency وهذه تستخدم دون توقيت 

عمل المتغيرات وجملة الاتصالات بالطريقة التي تناسبك (هنا وضع الجمله لكي يتناسب مع المثال وسهولة ا لاستخدام)
كود :
 Private Delegate Sub UICallback()

   Private Const CS As String = "Data Source=.;Initial Catalog=mydb;Integrated Security=True"
   Private Const QuerySelect As String = "SELECT id,nameFROM my_tab "

كود :
 Private Sub StartChecking()

       Dim cn As SqlClient.SqlConnection = Nothing
       cn = New SqlClient.SqlConnection(CS)

       Dim dad As New SqlClient.SqlDataAdapter(QuerySelect, cn)

       Dim dependency As New SqlClient.SqlDependency(dad.SelectCommand)

       AddHandler dependency.OnChange, AddressOf Me.OnNotificationChange

       SqlClient.SqlDependency.Start(CS)

       Dim ds As New DataSet
       dad.Fill(ds)
   End Sub

   Private Sub OnNotificationChange(ByVal sender As Object, ByVal e As SqlClient.SqlNotificationEventArgs)




       Dim dependency As SqlDependency = DirectCast(sender, SqlDependency)

       RemoveHandler dependency.OnChange, AddressOf Me.OnNotificationChange

       Me.Invoke(New UICallback(AddressOf FillGrid))
       StartChecking()

   End Sub
' تحميل البيانات
   Private Sub FillGrid()
       Using conn As New SqlConnection(CS)
           conn.Open()
           Using cm As New SqlCommand(QuerySelect, conn)
               Using adapter As New SqlDataAdapter(cm)
                   Dim ds As New DataSet
                   adapter.Fill(ds)
                   DataGridView1.DataSource = ds.Tables(0)
               End Using
           End Using
       End Using
   End Sub

   Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
       FillGrid()
       StartChecking()
   End Sub
'عند اغلاق النافذه
   Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
       SqlClient.SqlDependency.Stop(CS)
   End Sub

ALTER DATABASE "your db" SET ENABLE_BROKER with immediate rollback;

هناك ملاحظة يجب ان يتم التعديل على قاعدة البيانات وتفعيل خاصية