繁体   English   中英

C#connection.Open()异常

[英]C# connection.Open() exception

我试图连接到我的数据库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'”。 但它不会崩溃,只是跳过。

如果要打开与MySql的连接,则不要使用System.Data.SqlClient命名空间中的类,而是使用MySql.Data.MySqlClient的类

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

connection = new MySqlConnection(connectionString);

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM