Подключение к серверу с sqlconnection не работает - PullRequest
0 голосов
/ 19 сентября 2019

Кто-нибудь может мне помочь с этим?Я пытаюсь подключиться, но это не сработало.

Imports System.Data.SqlClient

Public Class Form2

    Public Property newForm As Object

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Me.Close()
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        If (MsgBox("Vill Du fortsätta?", vbQuestion + vbYesNo, AppTitle) = MsgBoxResult.Yes) Then        
        End If

        If TextBox1Username.Text = "" Or String.IsNullOrEmpty(TextBox1Username.Text) Or
         TextBox2Password.Text = "" Or String.IsNullOrEmpty(TextBox2Password.Text) Then        
            Return
        End If        

        Dim form As New FormNewAccount()        
        Dim connection As New SqlConnection("server = C:\Users\Hassan Al-Shommary\Documents\Login.md; Trusted_Connection = True ")        
        Dim command As New SqlCommand("Select * from Login where" = (Username =' +  TextBox1Username.Text), connection)
        Dim command As New SqlCommand("Select * from Login where" = (Password =' +  TextBox2Password.Text), connection)

        command.Parameters.Add("@Username", SqlDbType.VarChar).Value = TextBox1Username.Text
        command.Parameters.Add("@password", SqlDbType.VarChar).Value = TextBox2Password.Text

        Dim adapter As New SqlDataAdapter(command)        
        Dim table As New DataTable()       

        If table.Rows.Count() <= 0 Then        
            MsgBox("Username or Password are Inavlid")        
        Else        
            MsgBox("Login Successfully")        
        End If        

        form.Show()
        Me.Hide()

    End Sub

1 Ответ

0 голосов
/ 20 сентября 2019

Код в вашем вопросе не только не будет работать, но даже не скомпилируется.Вы не можете объявить 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

И последнее, но не менее важное: НИКОГДА не храните пароли в виде простого текста.Я оставлю это вам, чтобы исследовать засолку и хеширование паролей.

...