• 导入csv文件到数据库


    思路:先把csv文件用fso读取出来,根据定的格式,分割成自己相要的内容,然后分别写入数据库中

    eg:先对读取出来的数据做一个检查,符合条件的数据就作为一个整体,要么插入成功,要么插入失败,不符合条件的打印错误信息。

    try
        {

         myConnection.Open();
         OleDbTransaction ts=myConnection.BeginTransaction();   //开始事务
         cmd.Transaction=ts;
         StreamReader f=new StreamReader(oFile.PostedFile.InputStream,System.Text.Encoding.Default);  //读取数据库的数据流
         while ((input=f.ReadLine())!=null)           //while循环
         {
          if (iLine==0) //第一行是标题,忽略
          {
           output=input+"\r\n";
           myOutput.Add(output);
           iLine++;
           continue;
          }
          //     TextBox1.Text+=input+"\r\n";
          if (input.Trim()=="") continue;
          asF=input.Split(",".ToCharArray());

          if (asF[0]!=null && asF[0]!="" && asF[0].Trim().Substring(0,1)=="*") //有取消标志的不作处理
          {
           output=input+"\r\n";
           myOutput.Add(output);
           continue;
          }
          else if (asF.Length<5) //列小于5就标上错误标志
          {
           iErrorCount++;
           output="*"+input+",本行数据不足5列!\r\n";
           myOutput.Add(output);
          }
          else if (!(IsDate(asF[1])&&IsNumber(asF[3])&&IsNumber(asF[4]))) //未通过数据格式检验
          {
           iErrorCount++;
           output="*"+input+",数字或日期不正确\r\n";
           myOutput.Add(output);
          }
          else //正常的数据
          {
           try
           {
            cmd.CommandText = "select orgasn from torga where orgaid='"+asF[2].Trim()+"'";
            object oSN=cmd.ExecuteScalar();
            if (oSN==null)
            {
             throw (new Exception("门店不存在"));
            }
            int iSN=int.Parse(oSN.ToString());

            cmd.CommandText=string.Format("insert into tshopsav (shopsn,SavDate,SavAmount,PointsAmount,flag,createdby,createdon,lastupdatedby,lastupdatedon)"+
             " values ({0} ,to_date('{1}','yyyy-mm-dd'),to_number('{2}'),to_number('{3}'),'0',{4},sysdate,{5},sysdate)",
             iSN,asF[1].Trim(),asF[3].Trim(),asF[4].Trim(),m_sUserSN,m_sUserSN);
            cmd.ExecuteNonQuery();
            output=input+"\r\n";
            myOutput.Add(output);
           }
           catch(Exception ex)
           {
            iErrorCount++;
            output="*"+input+","+ex.Message+"\r\n";
            myOutput.Add(output);
           }
          }
          iLine++;
         }

         if (iErrorCount==0)
         {
          ts.Commit();
          myConnection.Close();
          //     TextBox1.Text="数据导入成功!";
          this.RegisterStartupScript("javascript","<script language=javascript>window.opener.document.forms(0).submit();window.close();</script>");  //数据导入成功后,刷新父窗体。数据导入的结果直接体现在界面上
         }
         else
         {
          ts.Rollback();    //数据导入失败,直接回滚事务。
          myConnection.Close();

              Response.Clear();
          Response.ClearHeaders();
          Response.Buffer= true;
          Response.Charset="GB2312"; 
              Response.AppendHeader("Content-Disposition","attachment;filename=error.csv"); 
              Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
              Response.ContentType = "text/csv";//设置输出文件类型为text文件。

          this.EnableViewState = false;

          System.Collections.IEnumerator myEnumerator = myOutput.GetEnumerator();
          while ( myEnumerator.MoveNext() )
           Response.Write(myEnumerator.Current.ToString());
          Response.Flush();
          Response.End(); 
          Response.SuppressContent=true;

          return;
         }

        }
        catch(Exception ex)
        {
            }

  • 相关阅读:
    圆桌十日冲刺之五
    圆桌十日冲刺之四
    圆桌十日冲刺之三
    圆桌十日冲刺之二
    圆桌十日冲刺之一
    圆桌的项目Alpha冲刺——测试
    圆桌的项目Alpha冲刺(团队)
    团队作业,随堂小测——校友录
    《软件工程实践》第七次作业——项目需求分析(团队)
    软工实践团队汇总
  • 原文地址:https://www.cnblogs.com/jameshappy/p/1363744.html
Copyright © 2020-2023  润新知