C# 在数据库中存储数据有时会导致数据损坏吗?
我有一个字段作为字符串存储在数据库中。它实际上是一个逗号分隔的数字字符串,我将其转换为一个长列表。执行转换的代码行看起来有点像:C# 在数据库中存储数据有时会导致数据损坏吗?,c#,parsing,exception-handling,string-parsing,C#,Parsing,Exception Handling,String Parsing,我有一个字段作为字符串存储在数据库中。它实际上是一个逗号分隔的数字字符串,我将其转换为一个长列表。执行转换的代码行看起来有点像: TheListOfLongs = (from string s in StringFromDB.Split(',') select Convert.ToInt64(s)).ToList<long>(); return String.Join(",", TheListOfLongs.Select(x=> x.To
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
语句),或者这是一种一万多亿类型的事件?从数据库中选择不会损坏字符串
如果在传输过程中或类似情况下断开连接,则会引发异常 我不会担心损坏的数据本身。但是,您肯定需要处理更一般的情况,即无法解析应该是数字数据的内容
即使在最受控制的情况下,当您不能按预期的方式处理数据时,提供条件也是一种良好的编程实践。这对您的应用程序意味着什么,您需要做出决定。用
try..catch来包装语句将防止应用程序阻塞,但如果解析的列表稍后很关键,则可能不合适。在Convert.ToInt64上中断的记录是什么样子的?@yack:它不会中断(目前)。这是一个由逗号分隔的数字字符串:289833553575235334355434463634316941422353534…不,数据库不会在你背后任意“损坏数据”。是的,非法数据可能会进入数据库,除非您在“插入”或“更新”之前对其进行严格验证。是的,除非您绝对确定不会出错(著名的遗言!),否则您绝对应该在适当的位置编写正确的错误处理代码。嗯…为什么要投否决票?想解释一下吗?