我有一个字段作为字符串存储在数据库中。它实际上是一个逗号分隔的字符串,我将其转换为长整型列表。的代码做转换的线条看起来有点像这样:可以将数据存储在数据库中有时会导致数据损坏?
TheListOfLongs = (from string s in StringFromDB.Split(',')
select Convert.ToInt64(s)).ToList<long>();
创建数据库存储字符串的代码如下所示:
return String.Join(",", TheListOfLongs.Select(x=> x.ToString()).ToArray());
这工作得很好,但你可以看到,如果出于某种原因,字符串出现问题,第一行代码中的代码中断了Convert.ToInt64(s)
。
现在我知道我可以换这一切都围绕着try
声明,但我的问题是这样的:可以存储和检索数据库中损坏的字符串的字符串(在这种情况下,我肯定需要try
语句)或这是一个一万亿奇数类型的事件?
记录是什么样的“打破'Convert.ToInt64(s)'”? – Yuck 2013-02-12 19:07:55
@Yuck:好吧,它不会中断(现在)。这是一串以逗号分隔的数字:28983,3553,57523,5334,35543,4636343,16941,4223,53534 .... – frenchie 2013-02-12 19:09:39
不,数据库不会随意地将背后的“数据损坏”。是的,非法数据可以进入数据库,除非在“插入”或“更新”之前严格验证它。 [GIGO](http://en.wikipedia.org/wiki/Garbage_in,_garbage_out)。是的,除非你绝对确定*没有*会出现任何错误(着名的遗言!),你应该在适当的地方编码正确的错误处理。恕我直言... – paulsm4 2013-02-12 19:13:19