Почему мой код не возвращает данные с параметрами

#mysql #vb.net

Вопрос:

Я начинающий, я делаю форму входа в систему, используя vb с MySQL, но я сталкивался с проблемой всякий раз, когда я нажимаю «Войти», система возвращает меня к коду, указывающему на адаптер.Заполните(таблицу) диалогом:Исключение, не обработанное пользователем, и в нем говорится: System.IO.FileNotFoundException: «Не удалось загрузить файл или сборку» Renci.SshNet, Версия=2016.1.0.0, Культура=нейтральная, PublicKeyToken=1cee9f8bde3db106′. Система не может найти указанный файл. » это мой код

Импортирует MySQL.Data.MySqlClient

Функции общедоступного класса Затемняют бд Как Новую бд()

 'a function to return table data Function getDataWithoutParams(ByVal query As String) As DataTable   Dim command As New MySqlCommand(query, db.getConnection())   Dim adapter As New MySqlDataAdapter(command)   Dim table As New DataTable()   adapter.Fill(table)   Return table  End Function  'function to return data table with parameters Function getDataWithParams(ByVal command As MySqlCommand) As DataTable   Dim adapter As New MySqlDataAdapter(command)   Dim table As New DataTable()   adapter.Fill(table)   Return table  End Function  

Ответ №1:

Хорошая идея отделить код базы данных от кода пользовательского интерфейса, но похоже, что вы создаете объект базы данных вне метода, в котором они используются. Это может вызвать проблемы, поскольку эти объекты необходимо утилизировать. Using блоки обрабатывают закрытие и утилизацию.

Код для формы входа в систему может выглядеть следующим образом. Я должен был угадать название таблицы и полей. Поскольку вам нужен только один фрагмент данных, который вы можете использовать ExecuteScalar .

 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click  If ValidateUser(txtUserName.Text, txtPassword.Text) Then  'User is valid  Else  'User is not valid  End If End Sub  Private OPConStr As String = "Your connection string."  Function ValidateUser(ByVal UserName As String, Password As String) As Boolean  Dim Count As Integer  Using cn As New MySqlConnection(OPConStr),  cmd As New MySqlCommand("Select Count(*) From `Users` Where `UserName` = @userName And `password` = @Password;", cn)  cmd.Parameters.Add("@UserName", MySqlDbType.VarChar).Value = UserName  cmd.Parameters.Add("@Password", MySqlDbType.VarChar).Value = Password  cn.Open()  Count = CInt(cmd.ExecuteScalar)  End Using  If Count = 1 Then  Return True  End If  Return False End Function