java - 测试对唯一标识符的查询是否最多返回一个结果
问题描述
我通过控制与给定电子邮件关联的密码实际上是否正确来验证网站上的登录输入(电子邮件和密码)。在数据库中,电子邮件是主键。
在 java 代码中是否有意义,以测试给定电子邮件的查询结果最多为一个?例如,通过测试是否有第二个结果。或者它是无用的,因为一旦正确创建数据库就不会发生这样的错误?
if(rs.next()) {
System.out.println("Something is wrong with the database");
System.exit(1);
}
另外,您能否评论一下当发生如此大的错误时如何最好地关闭程序?
解决方案
如果电子邮件是主键,则没有理由查看电子邮件是否有多个结果,因为正如您所说,主键是唯一的。所以,不要费心去检查那些不可能发生的事情。
如果你想把它放在一个测试套件中,我看不出有什么害处。
如果您担心架构可能是错误的,您可以编写一个测试来确认电子邮件是主键。
但是,为了记录,我将使用 INT 作为 PRIMARY KEY 并将电子邮件用作 UNIQUE 键。否则,每当您想引用一个地址时,您的系统中都会有电子邮件。当用户更改他们的电子邮件地址时会发生什么?这很痛苦,而且还有更多的边缘情况。如果您想为 dev db 打乱电子邮件地址会发生什么?
推荐阅读
- reactjs - 如果我尝试删除警告,则在 useEffect 中的 React.js 无限循环
- r - 相当于 tidyverse 生态系统中的 by
- python-3.x - 条形图 绘制包含三列的数据框
- python - 基于值将列表的部分分组为多个列表的 Pythonic 方式
- html - 为 GiF 制作动画
- javascript - React Native line-through 不居中
- powershell - 如何从 Powershell 运行 PHP(在 cmd 中运行)
- python - 如何使用python查找网站反向链接
- c# - 在没有关系的两个或多个模型之间共享表 - 实体框架
- javascript - 在问号和点上反应 javascript 语法错误