无法检索行值
本文关键字:检索 | 更新日期: 2023-09-27 18:04:03
我使用TableAdapters通过我的数据库表建立连接和查询。我有这样的查询:
SELECT salt FROM users WHERE (username = @usernameOrEmail) OR (email = @usernameOrEmail)
您可以想象,由于用户名和电子邮件字段是唯一的,它只能检索1行,这行可以是NULL,也可以实际上包含一个salt,这取决于usernameOrEmail参数是否有一个匹配任何用户名或电子邮件的字符串。
我使用以下代码调用查询并传递参数:public void checkEmailOrUsername(string emailOrUsername)
{
DataTable userDataTable = userInfoTableAdapters.getUserSalt(emailOrUsername);
DataRow userDataRow = userDataTable.Rows[0];
string saltValue = userDataRow["salt"].ToString();
}
当参数与表中的用户名或电子邮件不匹配时,它可以完美地工作,但是当电子邮件或用户名匹配时,它会中断。它在这一行给出了一个错误:
DataTable userDataTable = userInfoTableAdapters.getUserSalt(emailOrUsername);
错误如下:
System.Data类型的异常。在System.Data.dll中发生了ConstraintException,但未在用户代码中处理
附加信息:未能启用约束。一个或多个行包含违反非空、唯一或外键约束的值。
不一定会返回一个盐。考虑以下两个帐户:
用户名:约翰。smith, Email: John.Smith@Email.com
用户名:John.Smith@Email.com,邮箱:JohnSmith2@Email.com
查询将返回这两行。这是要先检查,如果这不能解决它可以张贴userInfoTableAdapters.getUserSalt(emailOrUsername)的内容以及堆栈跟踪?