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

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

http://m.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ù)庫(kù)的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的對(duì)象。為了使之用于該類中的其它函數(shù)中,我把它定義為一個(gè)類變量。

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

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

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

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

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)頁(yè)、表單程序或控制臺(tái)程序中調(diào)用DepTest函數(shù)來進(jìn)行測(cè)試。在返回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頁(yè),當(dāng)前在第3頁(yè)  1  2  3  4  

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

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

 
 
 
最新文章

搶先蘋果,消息稱英特爾芯片采用臺(tái)積電
三星揭曉業(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 首批用戶每人贈(zèng)送價(jià)
小米李明談?dòng)脩舯惶叱?nbsp;MIUI 測(cè)試版:大

推薦文章
1
2
3
4
5
6
7
8
9
10
叛逆嫩模性感寫真
宮如敏不雅照瘋傳 看張馨予韓一菲獸獸誰
不懼孔子搶位 阿凡達(dá)游戲影音配置推薦
2015第十七屆“東北安博會(huì)”火爆招商
第十六屆東北國(guó)際公共安全防范產(chǎn)品博覽
2016年第五屆中國(guó)國(guó)際商業(yè)信息化博覽會(huì)
2016年第五屆中國(guó)國(guó)際POS機(jī)及相關(guān)設(shè)備展
互聯(lián)網(wǎng)電視熟了嗎 2013最火電視深解析
桑達(dá)獲邀出席2015中國(guó)(廣州)國(guó)際POS機(jī)
寶獲利報(bào)名參加“2015年度中國(guó)POS機(jī)行業(yè)
八卦圖解 More>>
叛逆嫩模性感寫真 宮如敏不雅照瘋傳 看張馨予韓一菲
周偉童魔鬼身材日本性感寫真圖  聯(lián)想V360筆記本模特寫真
鸡泽县| 大方县| 柯坪县| 个旧市| 布尔津县| 西宁市| 辽中县| 鱼台县| 广东省| 故城县| 南投市| 大田县| 射洪县| 宁明县| 万全县| 平潭县| 宝鸡市| 盐源县| 神木县| 常州市| 凤庆县| 临泉县| 兴宁市| 正定县| 马尔康县| 靖边县| 雷波县| 遂昌县| 苍溪县| 宁南县| 桂阳县| 郁南县| 襄城县| 阿拉善右旗| 珠海市| 读书| 新晃| 郓城县| 连城县| 罗定市| 福清市|