亚洲AV无码乱码在线观看不卡|最新大伊香蕉精品视频在线|亚洲不卡av一区二区|国产美女无遮挡免费

登錄論壇 | 注冊會員 設(shè)為首頁 | 收藏本站
當(dāng)前位置 : 首頁>軟件學(xué)院>數(shù)據(jù)庫>SQL>正文
 
SQL Server2005查詢通知

http://www.yibo1263.com 2008/5/4 19:19:12  來源:yesky  編輯:阿拉格調(diào)
 

在整個(gè)的.NET 2.0的設(shè)計(jì)過程中,SqlDependency底層架構(gòu)從一種推模式(來自SQL Server)改變?yōu)橐环N拉模式(來自.NET)。這樣做的原因是為了解決第一次設(shè)計(jì)時(shí)所導(dǎo)致的一些安全問題。微軟的Sushil Chordia在MSDN上發(fā)表了一篇有關(guān)于這種改進(jìn)的文章,該文詳細(xì)描述了這一改進(jìn)的內(nèi)在機(jī)理。

六. 你的第一個(gè)通知

下面,讓我們開始使用SqlDependency來分析一下所有上面這些是如何協(xié)同工作的。

首先,我們創(chuàng)建一個(gè)類NotificationTest來存取你的數(shù)據(jù)。在這個(gè)類中,還要?jiǎng)?chuàng)建一個(gè)典型的函數(shù)以便從Pubs數(shù)據(jù)庫的Authors表中查詢一些數(shù)據(jù)并返回一個(gè)SqlDataReader。

Imports System.Data.SqlClient

Public Class NotificationTest

Public Function DepTest() As SqlDataReader

Dim conn As New SqlConnection(connstring)

conn.Open()

Dim cmd As New SqlCommand(

"SELECT * FROM authors(", conn)")

Dim rdr As SqlDataReader

rdr = cmd.ExecuteReader()

Return rdr

End Function

End Class

現(xiàn)在,讓我們修改代碼來加入這種依賴性。首先,聲明一個(gè)名為SqlDependency的對象。為了使之用于該類中的其它函數(shù)中,我把它定義為一個(gè)類變量。

然后,你需要改變這個(gè)查詢。查詢通知要求你顯式地列舉在你的查詢中的列,以及總是使用一種“兩部分”的表名。注意一下在修改后的代碼示例中的新的查詢文本。

然后,實(shí)例化新的SqlDependency并且把它依附到命令中。

就是這些。當(dāng)執(zhí)行命令時(shí),依賴性隨著它直到數(shù)據(jù)庫。在它處理查詢的同時(shí),SQL Server能夠看到這一依賴性并且把它發(fā)送到Service Broker以注冊它。

Imports System.Data.SqlClient

Public Class NotificationTest

Dim dep As SqlDependency

Public Function DepTest() As SqlDataReader

Dim conn As New SqlConnection(connstring)

conn.Open()

Dim cmd As New SqlCommand( _

"SELECT au_id, au_lname,au_fname " & _

"FROM dbo.authors", conn)

dep = New SqlDependency(cmd)

Dim rdr As SqlDataReader

rdr = cmd.ExecuteReader()

Return rdr

End Function

End Class

現(xiàn)在,你已經(jīng)注冊了依賴性,但是當(dāng)通知返回到應(yīng)用程序時(shí)你還根本沒有捕獲它。不過,SqlDependency類提供了兩種方式來了解一個(gè)通知。一種方式是通過OnChange事件,你可以通過創(chuàng)建一個(gè)代理來捕獲它;另一種方式是通過屬性HasChanges,你可以在你的應(yīng)用程序邏輯中對之進(jìn)行測試。在下列代碼中,我在OnDepChange事件中添加了代碼以便在后面的某個(gè)時(shí)候測試通知。

Imports System.Data.SqlClient

Public Class NotificationTest

Dim dep As SqlDependency

Public Function DepTest() As SqlDataReader

Dim conn As New SqlConnection(connstring)

conn.Open()

Dim cmd As New SqlCommand( _

"SELECT au_id,au_lname,au_fname FROM " + _

"dbo.authors", conn)

dep = New SqlDependency(cmd)

AddHandler dep.OnChange, AddressOf OnDepChange

Dim rdr As SqlDataReader

rdr = cmd.ExecuteReader()

Return rdr

End Function

'處理器方法

Public Sub OnDepChange(ByVal sender As Object, _

ByVal e As SqlNotificationEventArgs)

Dim DepInfo As String = e.Info.ToString

'做一些事情以響應(yīng)通知

End Sub

Public ReadOnly Property HasChanges() As Boolean

Get

Return dep.HasChanges

End Get

End Property

End Class

現(xiàn)在,我們來看一下其工作原理。首先,把一個(gè)斷點(diǎn)放到OnDepChange事件的End Sub代碼行。然后,從你喜歡的網(wǎng)頁、表單程序或控制臺程序中調(diào)用DepTest函數(shù)來進(jìn)行測試。在返回SqlDataReader后,在Visual Studio 2005的Server Explorer或在SQL Server Management Studio中打開Authors表并且編輯某一個(gè)字段內(nèi)容。例如,一旦鎖定這一改變,那么,當(dāng)你把光標(biāo)移動(dòng)到表中的一個(gè)新行時(shí),斷點(diǎn)應(yīng)該被激活。

本新聞共4頁,當(dāng)前在第3頁  1  2  3  4  

收藏】【打印】【進(jìn)入論壇
  相關(guān)文章:

·SQL Server2005數(shù)據(jù)加密技術(shù)應(yīng)用研究

 
 
 
最新文章

搶先蘋果,消息稱英特爾芯片采用臺積電
三星揭曉業(yè)內(nèi)首款單條 512GB DDR5 內(nèi)存
vivo 高端新機(jī)爆料:120Hz 曲面屏 + 天
vivo Y21 在印度正式上市:Helio P35 芯
微星推出 GeForce RTX 3080 Sea Hawk X
消息稱三星 Galaxy Tab S8 系列平板將放
機(jī)械革命推出 F6 輕薄本:16 英寸全面屏
英特爾 12 代 Alder Lake CPU 600 系列
雷軍:向小米手機(jī) 1 首批用戶每人贈送價(jià)
小米李明談?dòng)脩舯惶叱?nbsp;MIUI 測試版:大

推薦文章
1
2
3
4
5
6
7
8
9
10
叛逆嫩模性感寫真
宮如敏不雅照瘋傳 看張馨予韓一菲獸獸誰
不懼孔子搶位 阿凡達(dá)游戲影音配置推薦
2015第十七屆“東北安博會”火爆招商
第十六屆東北國際公共安全防范產(chǎn)品博覽
2016年第五屆中國國際商業(yè)信息化博覽會
2016年第五屆中國國際POS機(jī)及相關(guān)設(shè)備展
互聯(lián)網(wǎng)電視熟了嗎 2013最火電視深解析
桑達(dá)獲邀出席2015中國(廣州)國際POS機(jī)
寶獲利報(bào)名參加“2015年度中國POS機(jī)行業(yè)
八卦圖解 More>>
叛逆嫩模性感寫真 宮如敏不雅照瘋傳 看張馨予韓一菲
周偉童魔鬼身材日本性感寫真圖  聯(lián)想V360筆記本模特寫真
隆子县| 彭山县| 峨眉山市| 河北省| 阿坝县| 大足县| 红安县| 淮滨县| 渝北区| 瑞金市| 克山县| 莒南县| 翁牛特旗| 白山市| 澄迈县| 观塘区| 海晏县| 高陵县| 潢川县| 嘉善县| 洞头县| 宜宾市| 金华市| 彭泽县| 曲水县| 娄底市| 盐山县| 双鸭山市| 南乐县| 东至县| 响水县| 安阳市| 定边县| 湖州市| 安宁市| 山东| 北流市| 荣昌县| 中西区| 长子县| 来凤县|