Единственное, что я могу понять, что вы подразумеваете под модульностью, - это отделить код пользовательского интерфейса от кода доступа к данным. Я создал DataAccess
класс для всего кода вашей базы данных. Вам не нужен экземпляр класса для использования InsertUser
, потому что это метод Shared
. Просто используйте имя класса для доступа к нему.
Using...End Using
блоки закроют и уничтожат ваши объекты базы данных. Вы можете передать строку соединения непосредственно в конструктор соединения. Передайте текст команды соединение с конструктором вашей команды.
Я изменил параметры на метод .Add
. Вам нужно будет проверить правильность типа данных и размера поля в вашей базе данных.
Public Class DataAccess
Private Shared ConStr As String = "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Anbar;Integrated Security=True"
Public Shared Sub InsertUser(fname As String, lname As String, uname As String, pword As String)
Using cn As New SqlConnection(ConStr),
cmd As New SqlCommand("insert into [dbo].[User] ([name],[lastname],[username],[password]) VALUES (@name,@lastname,@username,@password);", cn)
cmd.Parameters.Add("@name", SqlDbType.VarChar, 100).Value = fname
cmd.Parameters.Add("@lastname", SqlDbType.VarChar, 100).Value = lname
cmd.Parameters.Add("@username", SqlDbType.VarChar, 100).Value = uname
cmd.Parameters.Add("@password", SqlDbType.VarChar, 100).Value = pword
cn.Open()
cmd.ExecuteNonQuery()
End Using
End Sub
End Class
Затем в форме мы имеем дело со всеми элементами пользовательского интерфейса. Обратите внимание, что класс DataAccess
не знает, откуда поступают значения параметров (нет ссылок на текстовые поля пользовательского интерфейса и т. П.), А код Form
не знает, куда они направляются. Это может быть любая база данных или событие текстового файла.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DataAccess.InsertUser(txtfristname.Text, txtlastname.Text, txtusernameregister.Text, txtpasswordregister.Text)
End Sub