目前,我正在使用NPGSQL
连接器将PostgreSQL数据库与我在VB.Net
中编写的应用程序连接起来。
我尝试使用PostgreSQL的NOTIFY
和LISTEN
功能NOTIFY
将特定表格的表格更改为前端。我尝试了一个积极的结果。我成功地从后端通知了前端。为实现这一目标,我尝试了以下内容:
Public Sub test()
Dim conn = New NpgsqlConnection("Server=servername;port=portNo; _
User Id=UID;pwd=PWD;DataBase=DB;")
conn.Open()
Dim command = New NpgsqlCommand("listen notifytest;", conn)
command.ExecuteNonQuery()
AddHandler conn.Notification, AddressOf NotificationSupportHelper
command = New NpgsqlCommand("notify notifytest;", conn)
command.ExecuteNonQuery()
End Sub
Private Sub NotificationSupportHelper(ByVal sender As Object, _
ByVal e As NpgsqlNotificationEventArgs)
'Notified here.
End Sub
这很好用,但是,PostgreSQL有一个全新的功能,用于通知,其中notify可以有一个有效负载,如NOTIFY test, 'Hello world'
(其中Hello world是有效负载,换句话说,附加信息)。
我想在Notification事件处理程序NotificationSupportHelper
中获取其他信息。所以为了得到它我只是试图访问NpgsqlNotificationEventArgs
的成员。但是我在那次尝试中失败了,因为它只包含PID和Condition作为其成员。所以我决定看看NPGQL documentation,从那里,我得到了,没有办法在NPGSQL vers 1.0中获得更多信息。但他们在第二版(NPGSQL V 2.0)中为NpgsqlNotificationEventArgs
提供了一个名为AdditionalInformation的额外成员。但它目前也正在建设中。此属性将始终返回String.Empty(来自docs)。
所以我希望你们让人们理解我想要完成的事情,我只需要在payload
被提升时收到前端的notification
。有人知道如何达到我的要求吗?是否有其他connector
可用而不是NPGSQL
来有效处理前端notification event
,这意味着在前端获取payload
。
答案 0 :(得分:1)
如果其他人有这个问题。现在可以使用AdditionalInformation
属性。
Private Sub NotificationSupportHelper(ByVal sender As Object,
ByVal e As NpgsqlNotificationEventArgs)
MsgBox(e.Condition & " " & e.AdditionalInformation)
End Sub