我需要帮助解决这个错误。
这是错误{"The type initializer for 'System.Transactions.Diagnostics.DiagnosticTrace' threw an exception."}
我正在使用 Access 数据库和平台进行构建配置是任何 CPU。
有时代码运行良好,有时突然抛出这个异常。这里有很多类似的问题,但没有一个能解决我的错误。
这是我的连接字符串
DbPath = @"d:\Ek.mdb";
ConnectionString =@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+DbPath+";User Id=admin;Password=;";
这是我打开连接的功能
我收到错误Con.Open()
public bool OpenConnection()
{
if (Con == null)
{
Con = new OleDbConnection(ConnectionString);
}
else if ((Con.State == ConnectionState.Broken || Con.State == ConnectionState.Closed) && (Con.State!=ConnectionState.Open))
{
Con.Open();
Tx = Con.BeginTransaction(IsolationLevel.ReadCommitted);
return true;
}
else if (IsConnectionBusy())
{
throw new DataException("Connection Busy");
}
return false;
}
这就是我在执行查询后关闭连接的方式
public Boolean CloseConnection()
{
if(IsConnectionBusy())
throw new DataException("Connection Busy");
if (Con.State==ConnectionState.Open)
{
Tx.Commit();
Con.Close();
return true;
}
return false;
}
public bool IsConnectionBusy()
{
switch (Con.State)
{
case ConnectionState.Connecting:
case ConnectionState.Executing:
case ConnectionState.Fetching:
return true;
}
return false;
}
我找不到为什么它有时会完美运行,然后有时会抛出此异常。
任何帮助将不胜感激。我为解决此错误尝试了太多,但无法解决。
我注意到的是在这条线上。
else if ((Con.State == ConnectionState.Broken || Con.State == ConnectionState.Closed) && (Con.State!=ConnectionState.Open))
连接在closed state
. 当它执行Con.Open()
语句时,Connection
状态更改为Open
,然后抛出此错误。
同样在调试时不会导致错误。只有当我不在breakpoint
那个地方放一个时才会引起这种情况。
当我第一次放置断点并停在Con.Open()
那里几秒钟时,没有抛出错误。之后,如果我禁用断点并且没有引发错误......!!!