首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

瓜分字符串到数据表中,有点难度

2012-11-01 
分割字符串到数据表中,有点难度。问个有难度的问题:字符串:BJ#001#Q31,500,2000#Q24,500,2000#Q04,600,2500

分割字符串到数据表中,有点难度。
问个有难度的问题:
字符串:BJ#001#Q31,500,2000#Q24,500,2000#Q04,600,2500#Q35,650,2500#Q48,700,3200#Q42,750,3500#Q66,800,4000#

TABLE
CREATE TABLE WW_TEST

  WW_CITYID VARCHAR2(20), //城市ID
  WW_MARKETID VARCHAR2(20),//商超ID
  WW_PLUID VARCHAR2(50), //物料ID
  WW_QTYSOLD VARCHAR2(50),// 数量
  WW_AMOUNT VARCHAR2(50) // 金额

把上面的字符串分割到下面的table里,前两个#号隔开的固定了,后面的循环插入。

C# code
                        string[] ssArray = s.Split('#');                        for (int j = 2; j <= ssArray.GetUpperBound(0); j++)                        {                            string[] sArray = ssArray[j].Split(',');                            string sql1 = "insert into ww_test values" +                             "('"+ sArray[0] + "','"                            + sArray[1] + "','"                            + sArray[2] + "','"                            + sArray[3] + "','"                            + sArray[4] + "',')";                            ocomm.CommandText = sql1;                            ocomm.ExecuteNonQuery();                        }                    }


上面的代码,如果没有 城市ID和商超ID,是可以插进去的。

[解决办法]
C# code
        string s = "BJ#001#Q31,500,2000#Q24,500,2000#Q04,600,2500#Q35,650,2500#Q48,700,3200#Q42,750,3500#Q66,800,4000#";        Match match = Regex.Match(s, @"(?<cityId>\w+)#(?<marketId>\w+)(?<value>.+)");        string cityId = match.Groups["cityId"].Value;        string marketId = match.Groups["marketId"].Value;        string[] rows = match.Groups["value"].Value.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);        foreach (string row in rows)        {            string[] columns = row.Split(',');            string sqlStr = string.Format("insert into 表名 values('{0}','{1}','{2}','{3}','{4}')", cityId, marketId, columns[0], columns[1], columns[2]);            Response.Write(sqlStr + "<br/>");        } 

热点排行