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,跟踪一下