Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
1年前关闭。
Improve this question
您如何在应用程序中处理数据库异常?
您是在尝试将数据传递给数据库之前进行验证还是仅依赖于数据库模式验证逻辑?
您是否尝试从某种数据库错误(例如超时)中恢复?
以下是一些方法:
验证数据,然后再将其传递给数据库 将验证留给数据库并正确处理数据库异常 双方验证 验证业务逻辑中的一些明显限制,并将复杂的验证留给DB
您使用什么方法?为什么?
更新:
我很高兴看到越来越多的讨论。
让我们尝试总结社区答案。
意见建议:
双方验证 检查业务逻辑约束
客户端,让DB进行完整性检查from hamishmcn 尽早检查以避免困扰数据库from ajmastrean 尽早检查以改善用户体验from Will 将数据库交互代码保留在适当的位置以
简化开发from hamishmcn 对象关系映射(NHibernate,Linq等)可以帮助您处理约束from ajmastrean 出于安全原因,必须进行客户端验证from Seb Nilsson
你还有话要说吗这将转换为验证特定的问题。我们缺少核心,即“与数据库有关的错误最佳实践”,要处理的是哪些,冒泡的是?
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
1年前关闭。
Improve this question
您如何在应用程序中处理数据库异常?
您是在尝试将数据传递给数据库之前进行验证还是仅依赖于数据库模式验证逻辑?
您是否尝试从某种数据库错误(例如超时)中恢复?
以下是一些方法:
您使用什么方法?为什么?
更新:
我很高兴看到越来越多的讨论。
让我们尝试总结社区答案。
意见建议:
客户端,让DB进行完整性检查from hamishmcn
简化开发from hamishmcn
你还有话要说吗这将转换为验证特定的问题。我们缺少核心,即“与数据库有关的错误最佳实践”,要处理的是哪些,冒泡的是?
最佳答案
@aku:DRY很好,但并非总是可行。验证是其中之一,因为您将拥有三个完全不同且不相关的地方,不仅可能而且绝对需要进行验证:在UI中,业务逻辑中以及数据库中。
考虑一个Web应用程序。您希望减少到服务器的行程,因此包括对客户端数据输入的javascript验证。但是您不能相信用户输入的内容,因此您必须在业务逻辑中执行验证,然后才能访问数据库。并且数据库必须具有自己的验证,以防止数据损坏。
没有一种简单的方法可以在单个组件中统一这三种不同类型的验证。
已经进行了一些尝试来统一跨部门的职责,例如在策略注入(inject)程序(例如P&P组的Policy Injection Application Block及其Validation Application Block)中进行验证,但是这些仍然基于代码。如果您的验证不在代码中,则仍然必须分别维护并行逻辑...
关于database - 数据库异常处理最佳实践,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39371/