【问题标题】:how to insert splitted string into different rows C#如何将拆分的字符串插入不同的行C#
【发布时间】:2013-04-17 07:11:53
【问题描述】:

我正在尝试根据我的要求插入以插入以下数据。 例如:我的excel表是这样的:

  id    name  codes                    
  1       a    12
  2       b    13,14,15
  3       c    16-19

我的要求是这样的:

 id     name   codes
  1       a      12        
  2       b      13
  2       b      14
  2       b      15
  3       c      16
  3       c      17
  3       c      18                
  3       c      19

我正在使用 c#。 谁能帮我.... 提前谢谢。

我的代码:

for (rCnt = 2; rCnt <= range.Rows.Count; rCnt++)
        {

            cmd = "insert into " + tablename + " values (";


            effective_date = VerifyDateTime(range.Cells[rCnt, 7].Value);
            destination = (string)(range.Cells[rCnt, 1] as Excel.Range).Value2;
            prefix = range.Cells[rCnt, 3].Value.ToString();
            codes = range.Cells[rCnt, 2].Value.ToString();
            level = range.Cells[rCnt, 5].Value.ToString();
            rate = range.Cells[rCnt, 4].Value.ToString();
            change = range.Cells[rCnt, 6].Value.ToString();
            company_id = cmbcompanyid.SelectedItem.ToString();


            string s = range.Cells[rCnt, 6].Value.ToString();
            List<string> l = new List<string>(s.Split(';', '-'));
            int le = 0;
            for (le = 0; le <= l.Count; le++)
            {




                change = l[le];


                cmd = cmd + "'" + destination + "','" + codes + "','" + prefix + "','" + rate + "','" + level + "','" + change + "','" + effective_date + "','" + company_id + "')";



                //       cmd = cmd + "'" + destination + "','" + codes + "','" + prefix + "','" + rate + "','" + level + "','" + change + "','" + effective_date + "','" + company_id + "')";



                cmd = ReplaceSpecialCharacters(cmd);

                MySqlCommand sqlCmd = new MySqlCommand(cmd, sqlCon);
                var i = sqlCmd.ExecuteNonQuery();

            }
        }

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 如果您显示您的代码,我们可以帮助您修复它。
  • 当我尝试根据像这样执行的拆分插入语句插入数据时“插入 quickcom 值('Aruba Mobile','297','0.1817','0.1817','No Change', '56','1899-00-30','Quickcom')'Aruba Mobile','297','0.1817','0.1817','无变化','57','1899-00-30', 'Quickcom')" 如何将此语句分隔为多个语句。

标签: c# database excel split


【解决方案1】:

没有内置的方法可以做到这一点,但你自己很容易做到:

  1. , 上拆分字符串以获取单独的值
  2. - 上拆分结果以获得范围限制。一个结果=没有范围;两个结果 = 下限和上限,因此发出中间的所有数字。

这里主要使用的方法是.Split()

完整的实现留给读者作为练习:-)

编辑
请注意,您将一个原始值转化为可能的许多新值。单个“插入”不足以处理一个输入行。

【讨论】:

  • 在最大值初始化时出现错误,例如“输入字符串的格式不正确。”。
  • @user2265801 - 那么您需要检查该最大值,显然这不是您认为应该的数字。
【解决方案2】:

你必须解析字符串,像这样:

string[] items = value.Split(",");
foreach (string item in items) {
  if (item.Contains("-")) {
    string[] parts = item.Split("-");
    int min = Int32.Parse(parts[0]);
    int max = Int32.Parse(parts[1]);
    for (int i = min; i <= max; i++) {
      // add the value in i to the data
    }
  } else {
    // add the value in item to the data
  }
}

【讨论】:

  • 在最大值初始化时出现错误,例如“输入字符串的格式不正确。”。
  • @user2265801:那么您的示例未涵盖一种类型的值。可能类似于"42-",其中破折号后的空值无法解析为整数。
猜你喜欢
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多