几乎每修改一次页面(不动后台),哪怕是添加几个文字都会出现下面的错误,还有从某一页进入另一页,偶尔也会出现这种情况.怎么回事啊? 异常详细信息: 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.   

    下面我把源码贴出来,在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); 
    就会出现上面这种情况,为什么? 
      

  2.   

    我这里没错误啊,不过你的数据访问层不行,一次查询数据库打开关闭好多次,还不如用sqlhelper呢
      

  3.   

    连接的打开和关闭放在两个方法一般而言不是什么好事,很容易发生连接没关的情况,如果再用了DataReader这样独占连接的对象就更容易出错了
      

  4.   

    datareader有个重载方法,第二个参数是读取完毕后自动关闭连接的.
      

  5.   

    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(); 
            } 
    在这个语句中,最好在执行绑定后就关闭,然后在finally可以再执行一遍