首页 > 解决方案 > 测试对唯一标识符的查询是否最多返回一个结果

问题描述

我通过控制与给定电子邮件关联的密码实际上是否正确来验证网站上的登录输入(电子邮件和密码)。在数据库中,电子邮件是主键。

在 java 代码中是否有意义,以测试给定电子邮件的查询结果最多为一个?例如,通过测试是否有第二个结果。或者它是无用的,因为一旦正确创建数据库就不会发生这样的错误?

if(rs.next()) {
    System.out.println("Something is wrong with the database");
    System.exit(1);
}

另外,您能否评论一下当发生如此大的错误时如何最好地关闭程序?

标签: javamysqlsqljdbc

解决方案


如果电子邮件是主键,则没有理由查看电子邮件是否有多个结果,因为正如您所说,主键是唯一的。所以,不要费心去检查那些不可能发生的事情。

如果你想把它放在一个测试套件中,我看不出有什么害处。

如果您担心架构可能是错误的,您可以编写一个测试来确认电子邮件是主键。

但是,为了记录,我将使用 INT 作为 PRIMARY KEY 并将电子邮件用作 UNIQUE 键。否则,每当您想引用一个地址时,您的系统中都会有电子邮件。当用户更改他们的电子邮件地址时会发生什么?这很痛苦,而且还有更多的边缘情况。如果您想为 dev db 打乱电子邮件地址会发生什么?


推荐阅读