日期:2014-05-18  浏览次数:20557 次

asp.net中将EXCEL读取后导入到access数据库中,一直是第64条记录出错,提示conn.open错误,第64条数据没有问题,分几次导入可以导进去

上面是VS截图
下面是出错提示
“/”应用程序中的服务器错误。
--------------------------------------------

未指定的错误 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.Data.OleDb.OleDbException: 未指定的错误

源错误: 


行 417: if (conn.State == ConnectionState.Closed)
行 418: {
行 419: conn.Open();
行 420: }
行 421:
 
-------------------------------------------
下面是代码!

我的代码是循环读取EXCEL中的数据进行判断是否与数据库中相同,EXCEL已经成功上传
会不会是这儿有错误,没有关闭CONN??

  using (OleDbConnection conn = new OleDbConnection(AccessHelper.connStr))
  {
  for (int i = 0; i < dr.Length; i++)
  {

  if (i == 0)//标题行,判断第一行标题是否正确
  {
  if (dr[i][0].ToString().ToUpper() != "KSH" || dr[i][1].ToString().ToUpper() != "XM" || dr[i][2].ToString().ToUpper() != "BMDDM" || dr[i][3].ToString().ToUpper() != "DL" || dr[i][4].ToString().ToUpper() != "SW")
  {
  Label1.Text = "数据结构不正确,请检查!";
  System.IO.File.Delete(Server.MapPath("..\\uploadFile") + "\\" + j + ".xls"); //导入成功后删除上传的EXCEL文件
  conn.Close();
  return;
  }

  }
  else
  {
  string KSH = dr[i][0].ToString();
  string XM = dr[i][1].ToString();
  string BMDDM = dr[i][2].ToString();
  string DL = dr[i][3].ToString();
  string SW = dr[i][4].ToString();
  string QXDM = BMDDM.Substring(0, 4);
  if (cbmddm == BMDDM || cbmddm == QXDM)
  {
  }
  else
  {
  error += "<em style='color:red;font-sixe:25px'>" + KSH + "</em>报名点代码不对,请检查。<br>"; // 考试类别代码和名称不一致,请检查。
  errorNum = errorNum + 1;
  continue;
  }
  if (DL != "" && DL != "不补考" || SW != "" && SW != "不补考")
  {
  error += "<em style='color:red;font-sixe:25px'>" + KSH + "</em>补考科目不对,请检查。<br>"; // 考试类别代码和名称不一致,请检查。
  errorNum = errorNum + 1;
  continue;
  }
  string sqlcheck = "select XM from X_HK where KSH=@KSH"; //检查报名号是否存在
  //DataReader查询数据成功
  //DataReader查询数据成功
  OleDbDataReader drcheck = AccessHelper.ExecuteReader(AccessHelper.connStr, sqlcheck, new OleDbParameter("@KSH", KSH));
  if (drcheck.Read())
  {
  error += "<em style='color:red;font-sixe:25px'>" + KSH + "</em>此考生号已存在,此行记录无法导入!请在考生信息中删除后再次导入。 <br>"; //若用户存在,将已存在用户信息打出,并提示此用户无法插入  
  errorNum = errorNum + 1;
  drcheck.Close();
  conn.Close();
  continue;

  }
  else
  {
   
  string sqladd = "insert into X_HK (KSH,XM,BMDDM,DL,SW,QXDM) values (@KSH,@XM,@BMDDM,@DL,@SW,@QXDM)";
  AccessHelper.ExecuteNonQuery(conn, sqladd, new OleDbParameter("@KSH", KSH), new OleDbParameter("@XM", XM), new OleDbParameter("@BMDDM", BMDDM), new OleDbParameter("@DL", DL), new OleDbParameter("@SW", SW), new OleDbParameter("@QXDM", QXDM));
  conn.Close();

  }
  }
  }
  }

------解决方案--------------------
本机调试,看看到哪报错,怎么看代码,好像for循环中再频繁的conn.Close,跟踪一下