我用obedb上传了一个EXCEL文件到服务器,然后遍历sheet1的数据,将数据插入到sql server 2005数据库中,记录稍微多一点(100左右)的时候就会出现假死,跟踪后发现会出现InvalidOperationException 异常,请高手指教!
下面是插入数据库的代码段,在线等答案,解决问题加分!!!            for (int i = 0; i < dr.Length; i++)
            {
                try//校验Excel第一行数据是否包含数据库字段名
                {
                    username = dr[i]["username"].ToString();//[username ] excel列名【名称不能变,否则就会出错】
                    realname = dr[i]["realname"].ToString();
                    usertype = dr[i]["usertype"].ToString();
                    department = dr[i]["department"].ToString();
                }
                catch
                {
                    Response.Write("<script>alert('Excel表格式与数据库不一致,请修改后再上传!')</script>");   //当Excel表格式不正确时,对用户进行提示
                    DeleteFile(savePath);
                    return;
                }
                if ((username != ""))
                {
                    string sql = "insert into users (username,realname,usertype,department) values('" + username + "','" + realname + "','" + usertype + "','" + department + "')";
                    try
                    {
                        dataBase.Command(sql);
                        j++;
                    }
                    catch (Exception ex)       //捕捉异常
                    {
                        error += "第" + (i + 2) + "行:\t<em style='color:red;font-sixe:25px;'>" + username + "</em>" + ex.Message + "<br>";
                    }
                }
                else
                {
                    error += "第" + (i + 2) + "行:\t记录为空,此行记录无法插入!请修改用户再进行插入<br>";//若用户存在,将已存在用户信息打出,并提示此用户无法插入
                }
            }

解决方案 »

  1.   


    不是字段类型引发的 
     记录数为几十条的时候就很正常,记录为100多以上的时候就会出现假死,一直卡在那里不走咯。。一直找不到原因,
      
     有没有可能是用for循环访问数据库太频繁导致的?
      

  2.   

    哪行报告的错误?你应该
    username = dr[i]["username"]==null?"":dr[i]["username"].ToString(); 进行容错