How to: Register Event Handlers and Subscribe to Event Handling in Visual Basic .NET
This section describes how to create an event handler and how to subscribe to a set of events in Microsoft Visual Basic .NET.
The code example shows how to set up the event handler and how to subscribe to the database events.
-
Start Visual Studio 2005.
-
From the File menu, select New Project. The New Project dialog box appears.
-
In the Project Types pane, select Visual Basic. In the Templates pane, select Console Application.
-
(Optional) In the Name box, type the name of the new application.
-
Click OK to load the Visual Basic console application template.
-
On the Project menu, select Add Reference item. The Add Reference dialog box appears. Select Browse and locate the SMO assemblies in the C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies folder. Select the following files:
Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.Smo.dll
Microsoft.SqlServer.SqlEnum.dll
Microsoft.SqlServer.SmoEnum.dll
-
On the View menu, click Code.-Or-Select the Module1.vb window to display the code window.
-
In the code, before any declarations, type the following Imports statements to qualify the types in the SMO namespace:
Imports Microsoft.SqlServer.Management.Smo Imports Microsoft.SqlServer.Management.Common
-
Insert the code that follows this procedure into the main program.
-
Run and build the application.
'Create an event handler subroutine that runs when a table is created. Private Sub MyCreateEventHandler(ByVal sender As Object, ByVal e As ServerEventArgs) Console.WriteLine("A table has just been added to the AdventureWorks database.") End Sub 'Create an event handler subroutine that runs when a table is deleted. Private Sub MyDropEventHandler(ByVal sender As Object, ByVal e As ServerEventArgs) Console.WriteLine("A table has just been dropped from the AdventureWorks database.") End Sub Sub Main() 'Connect to the local, default instance of SQL Server. Dim srv As Server srv = New Server 'Reference the AdventureWorks database. Dim db As Database db = srv.Databases("AdventureWorks") 'Create a database event set that contains the CreateTable event only. Dim databaseCreateEventSet As New DatabaseEventSet databaseCreateEventSet.CreateTable = True 'Create a server event handler and set it to the first event handler subroutine. Dim serverCreateEventHandler As ServerEventHandler serverCreateEventHandler = New ServerEventHandler(AddressOf MyCreateEventHandler) 'Subscribe to the first server event handler when a CreateTable event occurs. db.Events.SubscribeToEvents(databaseCreateEventSet, serverCreateEventHandler) 'Create a database event set that contains the DropTable event only. Dim databaseDropEventSet As New DatabaseEventSet databaseDropEventSet.DropTable = True 'Create a server event handler and set it to the second event handler subroutine. Dim serverDropEventHandler As ServerEventHandler serverDropEventHandler = New ServerEventHandler(AddressOf MyDropEventHandler) 'Subscribe to the second server event handler when a DropTable event occurs. db.Events.SubscribeToEvents(databaseDropEventSet, serverDropEventHandler) 'Start event handling. db.Events.StartEvents() 'Create a table on the database. Dim tb As Table tb = New Table(db, "Test_Table") Dim mycol1 As Column mycol1 = New Column(tb, "Name", DataType.NChar(50)) mycol1.Collation = "Latin1_General_CI_AS" mycol1.Nullable = True tb.Columns.Add(mycol1) tb.Create() 'Remove the table. tb.Drop() 'Wait until the events have occured. Dim x As Integer Dim y As Integer For x = 1 To 1000000000 y = x * 2 Next 'Stop event handling. db.Events.StopEvents() End Sub