如何防止异常值插入数据库?

时间:2009-03-13 06:56:03

标签: c# sql-server database defensive-programming

我有一个MS SQL DB包含一组表,每个表代表一个根据我们的公式计算的变量集合。 所有变量都是带有预定义percision的数字(我们使用数字数据类型,n.m为整数部分的n位数和小数部分的m位数)。

我的问题是如何防止异常值或任何违反列大小的无效值? 目前我们正在做简单的“尝试捕获”,因为ADO.net会抛出无效值的异常,有没有更好的方法? 此外,我想为此异常值在此列中设置有效值(即:可能为零)。 我正在使用C#3,MSSQL 2000并使用SqlBulkCopy类插入。

P.S:我问的是DB端或dotnet端的任何解决方案

3 个答案:

答案 0 :(得分:1)

我必须同意MartinK,并在批量插入数据之前进行验证步骤。这样您就可以更好地对此过程进行单元测试。

如果您有多个应用程序向此表添加数据,则存储过程可能是另一种强制执行验证的解决方案。

但是,另一种选择是将批量插入到临时/原始表中,对数据类型有更宽松的限制,然后使用TSQL将这些记录按到主表中。

答案 1 :(得分:0)

您可以尝试编写PSQL触发器/序列来验证您的数据类型关系!

有多少应用程序使用数据库中的相同数据?如果它只是你的应用程序,你不应该考虑将异常逻辑移出中间层。

答案 2 :(得分:0)

您正在描述我希望在应用程序设计中使用的验证和异常处理逻辑,而不是数据库设计。为什么它似乎不是最容易处理它的地方?你使用什么样的DAL?