0

我的应用程序中的数据库连接存在一些问题。我的应用程序将一些数据存储到 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最后,我只需检查 if checkResult == null。由于打开/关闭的一些问题,connection我决定检查连接是否打开。现在,如果调用了错误的方法,则连接将关闭。然后在调用OpenConnection()连接后再次使用与以前相同的设置打开连接。一旦应用程序执行checkResult = checkQuery.ExecuteScalar();,就会抛出异常。

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

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

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

提前致谢!格雷茨

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

4

0 回答 0