我的应用程序中的数据库连接存在一些问题。 我的应用程序将一些数据存储到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#连接器