Exemplo n.º 1
0
        /////////////////////////////////////////////////////////////////////////////
        /////////////////////////////////////////////////////////////////////////////
        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);
        }
Exemplo n.º 2
0
 ///<summary>构造函数
 ///</summary>
 ///<param name="filename">形如~/的地址</param>
 public OleDbDataOpener(string filename)
 {
     holder      = AccessConnectionHolder.GetConnection(filename, true);
     _Connection = holder.Connection;
     _Command    = new OleDbCommand();
 }