连接必须有效且开放 - >发生错误但连接有效?

时间:2012-09-14 17:47:22

标签: c# mysql wpf database mysql-connector

我的应用程序中的数据库连接存在一些问题。 我的应用程序将一些数据存储到mysql数据库中,现在我收到了标题中提到的错误。

问题是: 在我调用抛出此异常的方法之前,我调用另一个方法,该方法也连接到数据库但成功。 起初我认为我的源中存在错误,但没有错误。

这是不好的方法:

public static bool checkExistence(object obj)
    {
        MySqlCommand checkQuery = new MySqlCommand(MySQLQueries.getCheckQueryByObject(obj), connection);
        object checkResult = null;
        if (connection.State == System.Data.ConnectionState.Closed)
        {
            OpenConnection();
            try
            {
                checkResult = checkQuery.ExecuteScalar();
            }
            catch (MySqlException ex)
            {
                ErrorHandler(ex);
                return true;
            }
            catch (Exception ex)
            {
                ErrorHandler(ex);
                return true;
            }
            finally
            {
                CloseConnection();
            }
        }
        else
        {
            checkResult = checkQuery.ExecuteScalar();
        }

        if (checkResult != null)
            return true;
        else
            return false;
    }

如您所见,我首先创建一个新命令,稍后将检查对象是否存在。 查询结果将存储在object checkResult中,最后我只检查checkResult == null。 由于打开/关闭connection的一些问题,我决定检查连接是否打开。 现在,如果调用了坏方法,则关闭连接。 然后在调用OpenConnection()之后,使用与之前相同的设置再次打开连接。 一旦应用程序执行checkResult = checkQuery.ExecuteScalar();,就会抛出异常。

我真的不知道究竟是什么问题。 为了确保从我的角度来看连接是有效的,我将connection放入监视列表并跟踪应用程序对其所做的每个更改。 与成功使用数据库的任何其他方法没有什么不同。

我的一位朋友说在构建应用程序时可能存在一种优化错误。 他本人不使用C#,但有时使用C,所以这只是一个模糊的猜测。

我错过的代码中是否有任何错误或猜测为什么会发生这种错误?

提前致谢! 格尔茨

编辑:我使用最新版本的MySQL C#连接器

0 个答案:

没有答案