net+access网站传到服务器经常出现错误一会就出现,一会又自己好了。在本地调试没事,在服务器就总出现这个错误
请问是什么原因?谢谢!!!
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------未指定的错误 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 未指定的错误源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: 
[OleDbException (0x80004005): 未指定的错误]
   System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) +969373
   System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +86
   System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) +29
   System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +4863644
   System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117
   System.Data.OleDb.OleDbConnection.Open() +40
   Yu.Components.UserDB.ExecuteReader(String strSql) +72
   Yu.Components.Common.GetNewsComm() +10
   Inc_Left.Page_Load(Object sender, EventArgs e) +348
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +50
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Control.LoadRecursive() +141
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

解决方案 »

  1.   

    请问。是不是conn.close? public OleDbDataReader ExecuteReader(string strSql)
            {            OleDbConnection conn = new OleDbConnection(MyConnStr());
                conn.Open();            OleDbDataReader dr;                           OleDbCommand cmd = new OleDbCommand(strSql, conn);
                try
                {
                    dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                }
                catch
                {
                    dr = null;
                    conn.Close();
                }
                return dr;
            }
                    public int ExecuteNonQuery(string strSql)
            {
                OleDbConnection conn = new OleDbConnection(MyConnStr());
                conn.Open();
                OleDbCommand cmd = new OleDbCommand(strSql, conn);
                cmd.CommandText = strSql;
                int val = cmd.ExecuteNonQuery();
                conn.Close();
                return val;
            }我一般调用的时候都是释放了太长时间没做net了。可能都忘了。
      

  2.   


    你好,请问如果是没释放的原因,我在本地怎么才能测出来?现在本地怎么试都好使,传服务器上一会好使,多刷新几遍就不好使了
    这个是我写的类请问该怎么做呢?多谢
    public OleDbDataReader ExecuteReader(string strSql)
            {            OleDbConnection conn = new OleDbConnection(MyConnStr());
                conn.Open();            OleDbDataReader dr;                           OleDbCommand cmd = new OleDbCommand(strSql, conn);
                try
                {
                    dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                }
                catch
                {
                    dr = null;
                    conn.Close();
                    conn.Dispose();
                }
                return dr;
            }
                    public int ExecuteNonQuery(string strSql)
            {
                OleDbConnection conn = new OleDbConnection(MyConnStr());
                conn.Open();
                OleDbCommand cmd = new OleDbCommand(strSql, conn);
                cmd.CommandText = strSql;
                int val = cmd.ExecuteNonQuery();
                conn.Close();
                conn.Dispose();
                return val;
            }
            public DataView CreateView(string strSql)
            {
                OleDbConnection conn = new OleDbConnection(MyConnStr());
                OleDbDataAdapter adapter = new OleDbDataAdapter(strSql, conn);            
                DataSet ds = new DataSet();
                adapter.Fill(ds);
                DataView dv = ds.Tables[0].DefaultView;            
                conn.Close();
                conn.Dispose();
                return dv;
            }       public DataView CreateView(string strSql,int sRecord,int mRecord)
            {
                OleDbConnection conn = new OleDbConnection(MyConnStr());
                OleDbDataAdapter adapter = new OleDbDataAdapter(strSql, conn);
                DataSet ds = new DataSet();
                adapter.Fill(ds,sRecord, mRecord, "temptbl");
                DataView dv = ds.Tables["temptbl"].DefaultView;
                conn.Close();
                conn.Dispose();
                return dv;
            }
      

  3.   

    找个微软的sqlhelper 调用就可以避免这些东西。
      

  4.   

    求各位帮看一下,
    我的db.cs是这么写的,其他都是调用请问有哪里写的不对?
    真的是很急,麻烦大家了,多谢了
    public string MyConnStr()  //建立数据路连接
            {
                string strConn = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["aaaa"].ConnectionString;
                return strConn;            
            }       
            
                   
            public OleDbDataReader ExecuteReader(string strSql)
            {            OleDbConnection conn = new OleDbConnection(MyConnStr());
                conn.Open();            OleDbDataReader dr;                           OleDbCommand cmd = new OleDbCommand(strSql, conn);
                try
                {
                    dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                }
                catch
                {
                    dr = null;
                    conn.Close();
                    conn.Dispose();
                }
                return dr;
            }
                    public int ExecuteNonQuery(string strSql)
            {
                OleDbConnection conn = new OleDbConnection(MyConnStr());
                conn.Open();
                OleDbCommand cmd = new OleDbCommand(strSql, conn);
                cmd.CommandText = strSql;
                int val = cmd.ExecuteNonQuery();
                conn.Close();
                conn.Dispose();
                return val;
            }
            public DataView CreateView(string strSql)
            {
                OleDbConnection conn = new OleDbConnection(MyConnStr());
                OleDbDataAdapter adapter = new OleDbDataAdapter(strSql, conn);            
                DataSet ds = new DataSet();
                adapter.Fill(ds);
                DataView dv = ds.Tables[0].DefaultView;            
                conn.Close();
                conn.Dispose();
                return dv;
            }       public DataView CreateView(string strSql,int sRecord,int mRecord)
            {
                OleDbConnection conn = new OleDbConnection(MyConnStr());
                OleDbDataAdapter adapter = new OleDbDataAdapter(strSql, conn);
                DataSet ds = new DataSet();
                adapter.Fill(ds,sRecord, mRecord, "temptbl");
                DataView dv = ds.Tables["temptbl"].DefaultView;
                conn.Close();
                conn.Dispose();
                return dv;
            }
            public object ExecuteScalar(string strSql)
            {
                OleDbConnection conn = new OleDbConnection(MyConnStr());
                conn.Open();
                OleDbCommand cmd = new OleDbCommand(strSql, conn);
                object val = cmd.ExecuteScalar();
                conn.Close();
                conn.Dispose();
                return val;
            }
      

  5.   

    应该是没有数据库连接池没有释放的问题,你用USING就好了,不会存在这么多问题了
      

  6.   

    OleDbConnection 实例时用 USING 就OK!
      

  7.   


            public OleDbDataReader ExecuteReader(string strSql)
            {            OleDbConnection conn = new OleDbConnection(MyConnStr());
                conn.Open();            OleDbDataReader dr;                           OleDbCommand cmd = new OleDbCommand(strSql, conn);
                try
                {
                    dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                }
                catch
                {
                    dr = null;
                    conn.Close();
                    throw;           
                }
                return dr;
            }
                    public int ExecuteNonQuery(string strSql)
            {
                using (OleDbConnection conn = new OleDbConnection(MyConnStr()))
                {
                    conn.Open();
                    OleDbCommand cmd = new OleDbCommand(strSql, conn)
                        cmd.CommandText = strSql;
                        int val = cmd.ExecuteNonQuery();
                        conn.Close();
                        return val;
                }
            }
            public DataView CreateView(string strSql)
            {
                using (OleDbConnection conn = new OleDbConnection(MyConnStr()))
                {
                    OleDbDataAdapter adapter = new OleDbDataAdapter(strSql, conn);
                    DataSet ds = new DataSet();
                    adapter.Fill(ds);
                    DataView dv = ds.Tables[0].DefaultView;
                    conn.Close();
                    return dv;
                }
            }       public DataView CreateView(string strSql,int sRecord,int mRecord)
            {
                using (OleDbConnection conn = new OleDbConnection(MyConnStr()))
                {
                    OleDbDataAdapter adapter = new OleDbDataAdapter(strSql, conn);
                    DataSet ds = new DataSet();
                    adapter.Fill(ds, sRecord, mRecord, "temptbl");
                    DataView dv = ds.Tables["temptbl"].DefaultView;
                    conn.Close();
                    return dv;
                }
            }
            public object ExecuteScalar(string strSql)
            {
                using (OleDbConnection conn = new OleDbConnection(MyConnStr()))
                {
                    conn.Open();
                    OleDbCommand cmd = new OleDbCommand(strSql, conn);
                    object val = cmd.ExecuteScalar();
                    conn.Close();
                    return val;
                }
            }你好,请问是这么做么?还是不好使
      

  8.   

    算了,我换成sql数据库就好了、、、、