///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// public static Exception GetBetterException(Exception e, AccessConnectionHolder holder) { try { if (!(e is OleDbException) || holder.Connection == null || holder.Connection.DataSource == null || holder.Connection.DataSource.Length < 1) { return(e); } if (!File.Exists(holder.Connection.DataSource)) { return(new FileNotFoundException(String.Empty, holder.Connection.DataSource, e)); } } finally { if (holder.Connection != null) { holder.Connection.Close(); } } FileStream s = null; Exception eWrite = null; try { s = File.OpenWrite(holder.Connection.DataSource); } catch (Exception except) { eWrite = except; } finally { if (s != null) { s.Close(); } } if (eWrite != null && (eWrite is UnauthorizedAccessException)) { HttpContext context = HttpContext.Current; if (context != null) { context.Response.Clear(); context.Response.StatusCode = 500; context.Response.Write("Cannot write to DB File"); context.Response.End(); } return(new Exception("AccessFile is not writtable", eWrite)); } return(e); }
///<summary>构造函数 ///</summary> ///<param name="filename">形如~/的地址</param> public OleDbDataOpener(string filename) { holder = AccessConnectionHolder.GetConnection(filename, true); _Connection = holder.Connection; _Command = new OleDbCommand(); }