几乎每修改一次页面(不动后台),哪怕是添加几个文字都会出现下面的错误,还有从某一页进入另一页,偶尔也会出现这种情况.怎么回事啊? 异常详细信息: System.Data.OleDb.OleDbException: 未指定的错误 源错误: 
行 27:        { 
行 28: 
行 29:            conn.Open(); 
行 30: 
行 31:        } 
怎么解决?谢谢!!有源码,请高手下载帮我看看!! 
http://www.yuanshengkj.com/bbs/topic.asp?topic_id=1852&forum_id=26

解决方案 »

  1.   

    连接没有关闭
    可以在打开之前判断一下,如果一关闭然后open
    如果本身就是打开就不用再open了
      

  2.   

    try()
    {}
    catch()
    {}
    finaly
    {}
      

  3.   

    你把
    finaly 
    {}
    中的closeConnection()放到
    try{}中去...
      

  4.   

    谢谢各位!!
    我试了,但又出现这样的问题:
     catch (Exception e)
    行 273:        {
    行 274:            throw new Exception(e.Message);
    行 275:
    行 276:        }
      

  5.   

    下面我把源码贴出来,在DB.aspx.cs的源码是这样的: 
    public class DB 

        public static OleDbConnection Getconn() 
        { 
            OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["ConnectionString"].ToString())); 
            if (conn.State.Equals(ConnectionState.Closed)) 
            { 
              conn.Open(); 
            } 
            return conn; 
            } 
            private static void closeConnection() 
        { 
            OleDbConnection conn = DB.Getconn(); 
            OleDbCommand cmd = new OleDbCommand(); 
            if (conn.State == ConnectionState.Open) 
            { 
                conn.Close(); 
                conn.Dispose(); 
                cmd.Dispose(); 
            } 
        } 
    public static void binddatalist(string sql, DataList dl) 
        { 
            try 
            { 
                OleDbConnection conn = DB.Getconn(); 
                DataSet ds = getdataset(sql); 
                dl.DataSource = ds.Tables[0].DefaultView; 
                dl.DataBind(); 
            } 
            catch (Exception e) 
            { 
                throw new Exception(e.Message);         } 
            finally 
            { 
                closeConnection(); 
            } 
        } 

    然后在网页的后台引用如下: 
    string topsql1 = "select top 10 * from info  order by hits,id desc";//教育动态 
            DB.binddatalist(topsql1, this.DataList1); 
    用一条这样的语句没问题,但当我加入第二条语句时
    string topsql2 = "select top 10 * from info  order by hits,id desc";//教育动态 
            DB.binddatalist(topsql2, this.DataList2); 
    就会出现上面这种情况,为什么?
      

  6.   

        public static OleDbConnection Getconn()
        {
            OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["ConnectionString"].ToString()));
            if (conn.State.Equals(ConnectionState.Closed))
            {            conn.Open();        }
            return conn;
        
        }这步不要返回对象,OleDbConnection设置为公共变量,上面的改成void执行open操作就行了
      

  7.   

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.OleDb;
    using System.Web;
    namespace DAL
    {
        public class db
        {        ///<summary>
            /// 获得连接对象        ///</summary>
            ///<returns></returns>        public static OleDbConnection GetOleDbConnection()
            {
                return new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+ System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["db"].ToString()));
            }        private static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, string cmdText, params object[] p)
            {
                if (conn.State != ConnectionState.Open)
                {
                    conn.Open();
                }
                cmd.Parameters.Clear();
                cmd.Connection = conn;
                cmd.CommandText = cmdText;
                cmd.CommandType = CommandType.Text;
                cmd.CommandTimeout =30;
                if (p != null)
                {                foreach (object parm in p)
                    {
                        cmd.Parameters.AddWithValue(string.Empty, parm);
                    }
                }
            }        public static DataSet ExecuteDataset(string cmdText, params object[] p)
            {            DataSet ds = new DataSet();
                OleDbCommand command = new OleDbCommand();
                using (OleDbConnection connection = GetOleDbConnection())
                {
                    PrepareCommand(command, connection, cmdText, p);
                    OleDbDataAdapter da = new OleDbDataAdapter(command);
                    da.Fill(ds);
                }
                return ds;        }        public static DataRow ExecuteDataRow(string cmdText, params object[] p)
            {
                DataSet ds = ExecuteDataset(cmdText, p);
                if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    return ds.Tables[0].Rows[0];
                }
                return null;
            }        ///<summary>
            /// 返回受影响的行数        ///</summary>
            ///<param name="cmdText">a</param>
            ///<param name="commandParameters">传入的参数</param>
            ///<returns></returns>        public static int ExecuteNonQuery(string cmdText, params object[] p)
            {
                OleDbCommand command = new OleDbCommand();
                using (OleDbConnection connection = GetOleDbConnection())
                {
                    PrepareCommand(command, connection, cmdText, p);
                    return command.ExecuteNonQuery();
                }        }        ///<summary>
            /// 返回SqlDataReader对象
            ///</summary>
            ///<param name="cmdText"></param>
            ///<param name="commandParameters">传入的参数</param>
            ///<returns></returns>        public static OleDbDataReader ExecuteReader(string cmdText, params object[] p)
            {
                OleDbCommand command = new OleDbCommand();
                OleDbConnection connection = GetOleDbConnection();
                try
                {
                    PrepareCommand(command, connection, cmdText, p);
                    OleDbDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
                    return reader;
                }
                catch
                {
                    connection.Close();
                    throw;
                }        }        ///<summary>
            /// 返回结果集中的第一行第一列,忽略其他行或列
            ///</summary>
            ///<param name="cmdText"></param>
            ///<param name="commandParameters">传入的参数</param>
            ///<returns></returns>        public static object ExecuteScalar(string cmdText, params object[] p)
            {            OleDbCommand cmd = new OleDbCommand();
                using (OleDbConnection connection = GetOleDbConnection())
                {
                    PrepareCommand(cmd, connection, cmdText, p);
                    return cmd.ExecuteScalar();
                }        }        ///<summary>
            /// 分页
            ///</summary>
            ///<param name="recordCount"></param>
            ///<param name="pageIndex"></param>
            ///<param name="pageSize"></param>
            ///<param name="cmdText"></param>
            ///<param name="countText"></param>
            ///<param name="p"></param>
            ///<returns></returns>        public static DataSet ExecutePager(ref int recordCount, int pageIndex, int pageSize, string cmdText, string countText, params object[] p)
            {
                if (recordCount < 0)
                {
                    recordCount = int.Parse(ExecuteScalar(countText, p).ToString());
                }
                DataSet ds = new DataSet();
                OleDbCommand command = new OleDbCommand();
                using (OleDbConnection connection = GetOleDbConnection())
                {
                    PrepareCommand(command, connection, cmdText, p);
                    OleDbDataAdapter da = new OleDbDataAdapter(command);
                    da.Fill(ds, (pageIndex - 1) * pageSize, pageSize, "result");
                }
                return ds;
            }    }}
    给你个类吧