首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网站建设 > ASP.NET > 有规律格式化文本文件插入数据库
【标  题】:有规律格式化文本文件插入数据库
【关键字】:
【来  源】:http://blog.csdn.net/johnsuna/archive/2006/11/12/1379846.aspx

有规律格式化文本文件插入数据库

现有以下文本文件:

*理光(深圳)工业发展有限公司(D15)(位于福田区)
1.厨师1名;男;30岁以下;高中以上学历;中式烹调师中级以上,需备齐身份证\毕业证\流动人口婚育证明原件及复印件1份.经公司体检不合格者将不予录用,不合格者体检费自理.福利及待遇:工作时间8小时/天.5天/周,双休及国家规定之法定假日休息,免费中餐,免费住宿,为员工投养老工伤医疗保险.提供学习机会.
本公司经营范围:设计,生产复印机,传真机,打印机等;
有意者请于11月9日到本大厦二楼面试。
$
*百佳超市(C10)(位于罗湖区)
1.会计文员1名;女;中专以上学历;有1年以上财务工作经验;财会专业,有对帐经验者优先,成熟稳重,能适应较强的工作压力。
2.便衣保安2名;男;高中以上学历;沟通表达能力好,能吃苦耐劳,有一定的稽查及防损经验,为人正直,有同职工作经验优先。
以上职位要求应聘者身体健康,能自行解决食宿,有年薪假及社保等福利。
有意者请于11月9日、11月11日到本大厦二楼面试。
$
*山姆会员店(A14)(位于福田区)
1.防损员1名;25岁以上;大专以上学历;富有敬业精神和团队合作意识,个性稳定,有一定的判断能力和防损意识,两年以上相关经验。
2.干货部、电器部员工10名;男;高中以上学历;良好的沟通表达能力,有相关电器销售经验者优先。
3.果蔬部、冻品部员工10名;男;高中以上学历;良好的顾客服务意识和团队合作意识,2年以上相关工作经验者优先。
4.夜班理货员工3名;男;高中以上学历;能适应通宵班工作良好的顾客服务意识和团队合作意识,2年以上相关工作经验者优先。
有意者请于11月13日到本大厦二楼面试。 

公司名称以*开头,每条记录间以$分隔,招聘信息以数字序号开始,需要根据以下数据结构进行入库处理:
HRNewsPaper
------------------
id(主键)
CompanyId(与Company表中id相对应)
PositionName
PositionNumber
Requirement
InfoFrom
UpdateTime

Company
------------------
id(主键)
CompanyName
CompanyInfo
Note
InfoFrom
UpdateTime

以下列出关键代码:
if(this.IsPostBack)
   {
    string infos = hR_Content.Text.Trim();
    string[] arrInfos =  infos.Split(new char[]{'$'});
    string[] companyName = new string[arrInfos.Length];
    StringBuilder sbNote = new StringBuilder();
    string[] notes = new string[arrInfos.Length];

    //逐条读取企业信息
    for(int i = 0; i < arrInfos.Length; i++)
    {
     string info = arrInfos[i].Trim(new char[]{'\r', '\n'});
     string[] arrInfo = info.Split(new char[]{'\n'});
     int k = 0;

     string[] positionName =  new string[arrInfo.Length];
     int[] positionNumber = new int[arrInfo.Length];
     string[] requirement = new string[arrInfo.Length];

     //逐行读取每个企业的招聘信息
     for(int j = 0; j < arrInfo.Length; j++)
     {
      string strLine = arrInfo[j].Trim(new char[]{'\r', '\n'});
      //获取公司名称
      if(strLine.StartsWith("*"))
      {
       companyName[i] = strLine.Substring(1);
      }
      else
      {
       //获取职位,名额,要求
       //strLine = @"1.厨师厨师厨师厨师厨师厨师200名;男;30岁以下;高中以上学历;中式烹调师中级以上,需备齐身份证\毕业证\流动人口婚育证明原件及复印件1份.经公司体检不合格者将不予录用,不合格者体检费自理.";
       Regex r = new Regex(@"\d+\.(?<positionName>\D+)(?<positionNumber>\d+)(?<chineseMin>名;)");
       Match m = r.Match(strLine);
       if(m.Success)
       {
        positionName[k] = m.Groups["positionName"].Value;
        if(m.Groups["positionNumber"].Value != null)
        {
         positionNumber[k] = int.Parse(m.Groups["positionNumber"].Value);
        }

        int index = m.Groups["chineseMin"].Index + 2;
       
        requirement[k] = strLine.Substring(index);
       
        k++;
       }
       else
       {
        //获取附加説明文字
        sbNote.Append(strLine + "<br />");
       }
      }
      notes[i] = sbNote.ToString().Trim("<br />".ToCharArray()); 
     }
     sbNote = new StringBuilder();
     //入库
     string aa="";
     if(positionName.Length <= 0) return;

     string myConnectString = ConfigurationSettings.AppSettings["ConnString"] ;
     SqlConnection myConnection = new SqlConnection(myConnectString);
    
     SqlCommand sqlCmd = myConnection.CreateCommand();

     String strSql = "INSERT INTO COMPANY(CompanyName, CompanyInfo, Note, InfoFrom)" +
      "VALUES(@CompanyName, @CompanyInfo, @Note, @InfoFromCompany);";
     strSql += " Select @@IDENTITY";

     sqlCmd.CommandText = strSql;
     sqlCmd.CommandType = CommandType.Text;
    
     SqlParameter CompanyName = sqlCmd.Parameters.Add
      ("@CompanyName", SqlDbType.VarChar, 256);
     CompanyName.Value = companyName[i]. Replace("(",  "(").Replace(")",  ")");

     SqlParameter CompanyInfo = sqlCmd.Parameters.Add
      ("@CompanyInfo", SqlDbType.VarChar, 4000);
     CompanyInfo.Value = "";

     SqlParameter Note = sqlCmd.Parameters.Add
      ("@Note", SqlDbType.VarChar, 4000);
     Note.Value = notes[i];

     SqlParameter InfoFromCompany = sqlCmd.Parameters.Add
      ("@InfoFromCompany", SqlDbType.Char, 10);
     InfoFromCompany.Value = this.infoFrom;

     myConnection.Open();
     _lastID = int.Parse(sqlCmd.ExecuteScalar().ToString());
     //sqlCmd.ExecuteNonQuery();
     sqlCmd.Dispose();

     for(int m = 0; m < positionName.Length; m++)
     {
      if(positionName[m] != null)
      {
       //入库
       sqlCmd = myConnection.CreateCommand();

       strSql = "INSERT INTO HRNewsPaper(CompanyId, PositionName, PositionNumber, Requirement, InfoFrom)" +
        "VALUES(@CompanyId, @PositionName, @PositionNumber, @Requirement, @InfoFromHR)";
    
       sqlCmd.CommandText = strSql;
       sqlCmd.CommandType = CommandType.Text;
    
       SqlParameter CompanyId = sqlCmd.Parameters.Add
        ("@CompanyId", SqlDbType.Int);
       CompanyId.Value = this.LastID;

       SqlParameter PositionName = sqlCmd.Parameters.Add
        ("@PositionName", SqlDbType.VarChar, 60);
       PositionName.Value = positionName[m];

       SqlParameter PositionNumber = sqlCmd.Parameters.Add
        ("@PositionNumber", SqlDbType.VarChar, 60);
       PositionNumber.Value = positionNumber[m];

       SqlParameter Requirement = sqlCmd.Parameters.Add
        ("@Requirement", SqlDbType.VarChar, 4000);
       Requirement.Value = requirement[m];

       SqlParameter InfoFromHR = sqlCmd.Parameters.Add
        ("@InfoFromHR", SqlDbType.Char, 10);
       InfoFromHR.Value = this.infoFrom;
       
       sqlCmd.ExecuteNonQuery();
       sqlCmd.Dispose();
      }
     }
    
     myConnection.Close();

IE与Firefox的HTC:【上一篇】
Csdn Blog模板CSS代码(7):蓝色天空:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • Maxthon中拖拽的妙用
  • 李开复老师给中国学生的二封信
  • 王爽实验12
  • Open source Embedded Linux Graphics System Softwar
  • 用Java读取Windows的Command指令
  • VIEWGRID控制,系列收集!
  • httpd中d的理解
  • gsm的相关规范下载
  • Access数据库浏览工具
  • 拳皇97的小密秘
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.