0

嗨,我有以下方法。

public bool IsTableExist(string tableName)
    {
        try
        {

            if (Utility.Utility.CreatedTable.Contains(tableName.ToLower()))
                return true;
            else
            {
                _dataAccess.openconnection();
                if (!_dataAccess.isTableExist(tableName))
                    return false;
                Utility.Utility.CreatedTable.Add(tableName.ToLower());
                return true;
            }
        }
        catch (Exception ex)
        {
            Logger.WriteLogFile("QueryBuilder", "IsTableExist", ex.StackTrace);
        }
        finally
        {
             _dataAccess.closeconnection();
        }
        return false;
    }

在这里,我遇到了异常:

Object reference not set to an instance of an object.
at DataAccessLayer.DataAccess.closeconnection()
at QueryBuilder.QueryBuilder.IsTableExist(String tableName)
at ObjectFilling.BusinessLogic.GetDataTypeForAllTags(DataTable tagDetails)

如何解决异常。我有用于与数据库通信的 openconnection() 和 closeconnection() 方法。当closeconnection()方法被调用但openconnection()未被调用时,在 finally 块中抛出异常。openconnectio() 仅在以下情况下才会被调用代码到达 else 块。我可以在 else 块中使用 bool 变量来通知 finally 块何时调用 closeconnection。或者是否有任何其他方式可以修改代码以使异常不会发生。请在这方面帮助我。

4

1 回答 1

0
bool isOpen = false; 
try 
 {  
   _dataAccess.openconnection(); 
   isOpen = true; 
 } 
 finally 
 { 
  if (isOpen) 
  _dataAccess.closeconnection(); 
 }

我发现这是可行的解决方案。欢迎任何进一步的想法。在这种情况下,将在打开连接时设置 bool 变量。

于 2013-04-08T12:47:30.333 回答