C#connection.Open()异常

时间:2017-04-19 22:02:42

标签: c# mysql

我正在尝试连接到localhost上的数据库,但出于某种原因,它会引发异常,我无法找到原因和位置。

private void Initialize()
    {
        server = "localhost";
        database = "dbname";
        uid = "uname";
        password = "pass";
        string connectionString;
        connectionString = "SERVER=" + server + ";" + "DATABASE=" +
        database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";

        connection = new SqlConnection(connectionString);
    }

这是我的初始化函数;我的问题是:

    private bool OpenConnection()
    {
        try
        {
            connection.Open();
            return true;
        }
             ...

当我调试程序时,它保持在“connection.Open();”行了一段时间,然后我在控制台上看到“System.Data.dll中的异常抛出:'System.Data.SqlClient.SqlException'”。但它不会崩溃,只是跳过。

2 个答案:

答案 0 :(得分:3)

如果您想打开与MySql的连接,那么您不能使用System.Data.SqlClient命名空间中的类,而是使用MySql.Data.MySqlClient中的类

这些类是 MySqlConnection MySqlCommand MySqlDataReader 等...... 如果您尝试使用SqlConnection类,则如果要打开的数据库是MySql,则会收到此错误,因为它只能与Sql Server,Sql Server Express或LocalDB数据库系统一起使用。

connection = new MySqlConnection(connectionString);

当然,要使用 MySql.Data.MySqlClient 命名空间,您需要将MySql NET Connector然后add a reference下载并安装到项目中以安装程序集MySql.Data .dll(并将using MySql.Data.MySqlClient添加到需要使用这些类的每个cs文件的顶部)

答案 1 :(得分:0)

它没有崩溃,因为你在try-catch块中打开连接,所以程序认为你正在处理异常。如果你想让它崩溃,摆脱try-catch块。 (这将是一个糟糕的用户体验。)

或者,在尝试捕获之后,您可以检查连接是否有效,然后执行某些操作(如果不是)。

if ((connection == null) || (connection.State != ConnectionState.Open)) { 
    /* do something here to indicate to the user there was an issue.
}