Я пишу приложение Winforms в Visual Studio 2013, которое имеет несколько форм.Я добавляю журнал событий, чтобы увидеть, кто что использует, время входа в систему, время выхода из системы и т. Д. (Все безвредно, это инструмент управления для команды на работе).Я хочу упростить и уменьшить длину необходимого кода.
Прямо сейчас у меня есть код ниже в каждой подпрограмме события во всех формах.
Dim connection As New SqlConnection("Server= server\instance; Database = db;
User ID=uID;Password=pw")
Private Sub btnAssociate_Click(sender As Object, e As EventArgs) Handles btnAssociate.Click
Dim eLogCMD As New SqlCommand("sp_EventLog", connection)
Me.connection.Open()
eLogCMD.CommandType = CommandType.StoredProcedure
eLogCMD.Parameters.AddWithValue("@Username", Login.UsernameTextBox.Text.ToString())
eLogCMD.Parameters.AddWithValue("@Action", "AssociateArea")
eLogCMD.Parameters.AddWithValue("@Comments", "Entered Associate Area")
eLogCMD.ExecuteNonQuery()
Me.connection.Close()
Есть несколько других подпрограмм, все содин и тот же код и несколько форм с одинаковым подключением, SqlCommand
и объявленными параметрами;изменяются только значения параметров.Это работает, но должен быть более чистый путь.
Я хочу создать одну SqlConnection
и SqlCommand
в главной форме для вызова и передачи параметров из различных форм и подпрограмм событий.Я ищу что-то простое, как это:
Sub --Whatever Event
Main.eLogCMD.ExecuteNonQuery(1stParameterValue, 2ndParameterValue, 3rdParameterValue)
End Sub
Отображение хранимой процедуры SQL Server:
CREATE PROCEDURE [dbo].[sp_EventLog]
@Username VARCHAR(50),
@Action VARCHAR(30),
@Comments VARCHAR(100)
AS
BEGIN
INSERT INTO AppEventLog ([Username], [Action], [Comments])
VALUES (@Username, @Action, @Comments)
END