Код в вашем вопросе не только не будет работать, но даже не скомпилируется.Вы не можете объявить 2 переменные с одинаковыми именами в одной и той же области видимости.
Dim command As New...
Dim command As New...
О чем это?Public Property newForm As Object
Если вы хотите объявить форму, сделайте это, но не печатайте как Object.
String.IsNullOrEmpty покрывает пустую строку "".Не обязательно проверять оба.
Я расскажу код базы данных ниже, но ваш код, который проверяет пользователя с количеством строк в конце, не препятствует открытию FormNewAccount даже для недопустимого пользователя.
Private Sub OPCode()
Dim count As Integer
'Use Using...End Using blocks for your database objects so they will be closed and disposed.
Using Connection As New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\\Users\Hassan Al - Shommary\\Documents\\Data.mdf;Integrated Security=True;Connect Timeout=30;")
'Don't retrieve data you don't need. All you need is Count and that can be retrieved with .ExecuteScalar
Using command As New SqlCommand("Select Count(*) from Login where Username =@Username And Password = @Password;", Connection)
command.Parameters.Add("@Username", SqlDbType.VarChar).Value = TextBox1Username.Text
command.Parameters.Add("@Password", SqlDbType.VarChar).Value = TextBox2Password.Text
Connection.Open()
count = CInt(command.ExecuteScalar())
End Using
End Using
If count <> 1 Then
MessageBox.Show("Sorry, invalid login")
Return
Else
MessageBox.Show("Successful login.")
'Don't create an instance of the next form until you are sure you will need it.
Dim form As New FormNewAccount()
form.Show()
Hide()
End If
End Sub
И последнее, но не менее важное: НИКОГДА не храните пароли в виде простого текста.Я оставлю это вам, чтобы исследовать засолку и хеширование паролей.