Файл не найден Исключение было обработано в строке адаптера. Заполнить (таблица) - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь подключиться к базе данных MySql, но эта ошибка появилась

FileNotFoundException не обработано

в строке adapter.Fill.

FileNotFoundException не обработано. Не удалось загрузить файл или сборку 'Renci.SshNet, версия = 2016.1.0.0, культура = нейтральная, PublicKeyToken = 1cee9f8bde3db106' или одна из ее зависимостей. Система не может найти указанный файл

class CONNECT
{
    private MySqlConnection connection = new MySqlConnection("Datasource=localhost;Port=3306;Username=root;Password=;Database=Csharp_Hotel_DB");

    //create a function to return our connection
    public MySqlConnection getConnection()
    {
        return connection;
    }

    //create a function to open the connection
    public void openConnection()
    {
        if (connection.State == ConnectionState.Closed)
        {
            connection.Open();

        }
    }

    //create a function to close the connection
    public void closeConnection()
    {
        if (connection.State == ConnectionState.Open)
        {
            connection.Close();

        }
    }
}

private void buttonLogin_Click(object sender, EventArgs e)
{
    CONNECT conn = new CONNECT();
    DataTable table = new DataTable();
    MySqlDataAdapter adapter = new MySqlDataAdapter();
    MySqlCommand command = new MySqlCommand();
    String query = "SELECT * FROM `users` WHERE `username`=@usn AND `password`=@pass";

    command.CommandText = query;
    command.Connection = conn.getConnection();

    command.Parameters.Add("@usn", MySqlDbType.VarChar).Value = textBoxUsername.Text;
    command.Parameters.Add("@pass", MySqlDbType.VarChar).Value = textBoxPassword.Text;

    adapter.SelectCommand = command;
    adapter.Fill(table); //this line is the FileNotFoundException was unhandled


    // if the username and the password exists
    if (table.Rows.Count > 0)
    {
        this.Hide();
        MessageBox.Show("YES");
        Main_Form mform = new Main_Form();
        mform.Show();
    }
    else
    {

        if (textBoxUsername.Text.Trim().Equals(""))
        {
            MessageBox.Show("Enter Your Username to Login", "Empty Username", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        else if (textBoxPassword.Text.Trim().Equals(""))
        {
            MessageBox.Show("Enter Your Password to Login", "Empty Password", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        else
        { 
            MessageBox.Show("Username and Password Doesn't Exists", "Wrong Data", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}

Ответы [ 4 ]

1 голос
/ 01 октября 2019

Сейчас работает c. Использование MySQL-connector-net-6.3.5 может исправить эту ошибку или проблему, потому что я использую .net 4

Спасибо за вашу помощь.

0 голосов
/ 02 октября 2019

Это ошибка в MySQL, Connector / NET, ошибка 96614 . Это будет исправлено в Connector / NET 8.0.18.

Исправлено в следующей версии MySQL Connector / NET 8.0.18, и вот запись в журнале изменений:

Renci. Развертывание SshNet.dll было проблематичным для установок MSI Connector / NET 8.0.17. Некоторые приложения, такие как Microsoft Excel, не смогли прочитать данные MySQL в результате. Это исправление удаляет ненужные зависимости от DLL, а также гарантирует, что установка MSI развертывает правильный файл Renci.SshNet.dll в GAC.

Обходной путь, который вы можете использовать сегодня, переключается на MySqlConnector , альтернативная библиотека OSS ADO.NET для MySQL, в которой нет этой ошибки.

0 голосов
/ 01 октября 2019

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

Вы должны передать имя таблицы

DataTable table = new DataTable("users");

0 голосов
/ 01 октября 2019

похоже, что вы не обрабатываете исключения, которые адаптер. используйте:

try{
    adapter.Fill(table);
} catch(FileNotFoundException e) {
    do stuff with e or your code
}

альтернативно проверьте патчи, если они существуют, перед их использованием.

...