#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