Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL exceptions not caught (C#)

My C# program works with a MySQL database.

For some reason the program cannot catch exceptions caused my the MySQL connection.

Example:

If I make the credentials in the connection string invalid, the program crashes like this (even when running in the debugger): https://i.sstatic.net/Z7KVe.jpg

The connection code is like this:

using MySQLDriverCS;

namespace XXX
{
    public class Data
    {
        private static MySQLConnection con;

        static Data()
        {
            string connectionString = new MySQLConnectionString("XXX",
                "XXX",
                "XXX",
                "XXX").AsString;

            con = new MySQLConnection(connectionString + ";CharSet=utf8");
            con.Open(); // For testing the connection
            con.Close();
        }
...

Any ideas for how I can improve things and start catching MySQL exceptions?

I have tried wrapping the code in the static constructor in a try-catch. That didn't help. The program still crashed in the same way.

Thanks.


Same code with the try-catch wrapper. It still fails with the same error: https://i.sstatic.net/Z7KVe.jpg

    static Data()
    {
        try
        {
            string connectionString = new MySQLConnectionString("XXX",
                "XXX",
                "XXX",
                "XXX").AsString;

            con = new MySQLConnection(connectionString + ";CharSet=utf8");
            con.Open(); // For testing the connection
            con.Close();
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
like image 451
Louisa Avatar asked Mar 07 '26 19:03

Louisa


1 Answers

Use the appropriate exception type in the catch block.

Use the appropriate MySQL classes.

using MySql.Data.MySqlClient;

// class level var or whatnot:
string connString = @"server=theHostName;userid=dbuser123;password=OpenSesame7;database=my_db_name";


public void connect()
{
    try
    {
        conn = new MySqlConnection(connString); // read above comments for (conn)
        conn.Open();
    }
    catch (MySqlException ex)
    {
        MessageBoxButtons buttons = MessageBoxButtons.OK;
        string s="MySqlException: "+ex.ToString();
        MessageBox.Show(s,"Error",buttons);
    }
    finally
    {
        if (conn != null)
        {
            //conn.Close();
        }
    }
}

Error Caught No Problem:

enter image description here

Add References screenshot:

enter image description here

like image 129
Drew Avatar answered Mar 10 '26 09:03

Drew