【发布时间】:2011-11-07 23:39:21
【问题描述】:
我是 C# 和 SQL 的新手。但在过去的几年里,在大学里学习这两门课的时候,一个问题真的开始在我心中燃烧。这里是:
在我看来,确实有两种非常通用的方法来处理输入验证(即检查必填字段和正确范围内的数据等)。
第一个,也是传统的方式是:一旦您开发了您的 UI,并以某种方式将其连接到数据库后端。在用户界面上,您可以检查输入是否正确,例如空白文本框、数字范围,或者确保选中单选框或复选框等。
第二种,也是数据库开发中展示的方式是:对字段设置检查约束,例如不允许空值、唯一值,甚至范围和必填字段。
我的困境是这样的。鉴于在像 C# 这样的现代语言中,您可以进行一般的执行处理,并且还考虑到大多数数据库(如 SQL Server)都内置了大联盟容错,以处理与提交全部或不提交有关的数据更改。像这样的细节,到这个级别,除了最简单的程序外,其他任何东西都很难编程。
所以我的问题是,为什么不将所有需求直接构建到数据库后端的表中。利用前面提到的容错性,忘记编写 if 语句以确保输入正确的数据,而是在数据未提交时使用通用的 catch all execption 处理程序。
也许这就是它的完成方式,如果是这样,我真的很想知道。如果不是,为什么?我的偏好是尽可能避免编写代码。在更新方面,更少的代码、更少的调试和更少的问题。所以我倾向于采用让数据库后端完成工作的方法。这是通常正确的做法吗?
我知道一般的执行处理在资源方面被认为是“昂贵的”。但是一旦你超过 5 或 10 个 if 语句来处理不同的字段及其约束,那么只做一个通用的 execption 处理程序就必须更有效的代码。总体而言,它确实似乎更容易理解。 (至少我这样做的方式)。
感谢您对此的帮助。
【问题讨论】:
-
有趣,我自己也经常想知道这个
-
这让我大吃一惊:“我的偏好是尽可能避免编写代码。更少的代码、更少的调试和更少的更新问题。”
-
@jack-t-colton - 我从事软件开发,我们大学的主要规则是始终将其归咎于数据库人员! :->
标签: c# .net mysql sql sql-server