转换时输入字符串的格式不正确,将值插入循环内的数据库中

时间:2018-04-29 03:34:33

标签: c# entity-framework

我正在制作字符串" 1234,5678,9101,1213,"到一个数组,以便我可以遍历这个数组并插入数据库列名称" CardID "其数据类型为 int

错误讯息:

  

异常详细信息:System.FormatException:输入字符串不在   格式正确。

即使出现错误,循环中的值也会被插入到数据库表中,这有多么奇怪。

文件 CardsController.cs

//1234,5678,9101,1213,
string[] CardNumbers = model.CardsNumbers.Split(',');
foreach (string CardNumber in CardNumbers)
{
    Card Card = new Card();
    Card.CardID = Convert.ToInt32(CardNumber); //Input string was not in a correct format.
    Card.TaxPayerTIN = model.TaxPayerTIN;
    Card.PortID = model.PortID;
    Card.AddedUserID = 1;
    Card.AddedDateTime = DateTime.Now;

    db.Cards.Add(Card);
    db.SaveChanges();

}

1 个答案:

答案 0 :(得分:3)

您的字符串“1234,5678,9101,1213”以分隔符(“,”)结尾,因此String.Split返回的数组的最后一个元素将是空字符串。将空字符串传递给Convert.toInt32是格式错误。

您可以通过指定S tringSplitOptions.RemoveEmptyEntries来避免此行为:

model.CardsNumbers.Split(',', StringSplitOptions.RemoveEmptyEntries);

RemoveEmptyEntries - 返回值不包含包含空字符串的数组元素