//DataAccess类: /// <summary>
        /// 对ACCESS库操作
        /// </summary>
        /// <returns>返回datatabel</returns>
        public static DataTable A_DT(string FilePath, string sql)
        {
            string strconn = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Persist Security Info=False;Persist Security Info=False",FilePath);
            using(OleDbConnection conn=new OleDbConnection (strconn))
            {
                conn.Open();
                OleDbDataAdapter oda = new OleDbDataAdapter(sql,conn);
                DataTable dt = new DataTable();
                oda.Fill(dt);
                return dt;
            }
        }
//DAL一个类:
 public static DataTable SelectMeterInfo(string FilePath)
        {
            string sql = string.Format("select User_ID,User_Name,User_Addr,AssetofNum,Meter_num from Meter");
            return DataAccess.A_DT(FilePath, sql);
        }<asp:FileUpload ID="FileUploadInfo" runat="server" />
        <asp:Button ID="ButMeter" runat="server" Text="导入电表信息" 
            onclick="ButMeter_Click" />
//UI后台
string FileName = FileUploadInfo.PostedFile.FileName.Trim();
            DataTable dt = ImportMeter.SelectMeterInfo(FileName);
            Response.Write(dt.Rows.Count);结果是0,这是为什么?是不是没换转好? 如果我把路经写死
 public static DataTable A_DT(string sql)
        {
            string strconn = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\接口\Data31\NewlyRTU.mdb;Persist Security Info=False;Persist Security Info=False");
            using (OleDbConnection conn = new OleDbConnection(strconn))
            {
                conn.Open();
                OleDbDataAdapter oda = new OleDbDataAdapter(sql, conn);
                DataTable dt = new DataTable();
                oda.Fill(dt);
                return dt;
            }
        }结果正是我想要的数。写死就好了。为什么?哪里有错?帮帮小弟吧。感激不尽!

解决方案 »

  1.   

    FileUpload 先上传,saveas保存到相对路径
    Server.MapPath("~/")获取文件路径
      

  2.   

    调试一下 把sql 语句 贴到数据库 执行一下
      

  3.   

    string FileName = FileUploadInfo.PostedFile.FileName.Trim();
    调试得到fileName 你就知道原因了
      

  4.   


    调试了。 调试的时候看到的路经是这个样子:E:\\接口\\Data31\\NewlyRTUch.mdb 打印出来怎么是:E:\接口\Data31\NewlyRTUch.mdb 这样? 
      

  5.   


    sql 没问题,就是那个路经和上传控件的问题。可是我还弄不好。 因为我不用上传控件获得路经,真接写死就没问题了。
      

  6.   

    ,你上传的是虚拟路径,你要将其转换为绝对路径,用Server.MapPath(你的上传控件得到的);
      

  7.   

    用html 控件获得文件路经就不会报错了。和Winform一样。OK。