【发布时间】:2018-05-05 11:55:26
【问题描述】:
我有以下代码和数据库,但我不明白这个问题。每当我尝试运行程序时,它总是抛出这个异常: System.Core.dll 中出现“System.InvalidOperationException”类型的未处理异常
在我的用户数据库中有一行用户名:majorcsanad 和密码:722308,当我尝试使用此名称/密码登录时,它说它包含零元素。
我的代码如下:
public partial class Login : Form
{
szofttech2Entities context = new szofttech2Entities();
public Login()
{
InitializeComponent();
}
private void buttonEnter_Click(object sender, EventArgs e)
{
var password = (from u in context.Users
where u.UserName == textBoxUserName.Text
select u.Password).Single();
if (textBoxPassword.Text == password)
{
Order order = new Order();
order.Show();
this.Hide();
}
else
{
labelWrongUserPassword.Visible = true;
}
}
}
【问题讨论】:
-
这样的用户真的只有一个吗?
.Single如果多个元素满足某个条件,则抛出。 -
是的,我查过了,那一栏也是独一无二的。我用 firsOrdefault 尝试了同样的错误
-
您将密码存储为纯文本 - 一个很大的“禁忌”,因为它使您系统的用户容易被盗取密码。即使作为学习练习的一部分,这也不应该被接受,更不用说生产项目了。
-
FirstOrDefault()。由于查询未找到任何数据,您可能会遇到错误。确保 context.Users 不为空。您可能没有连接到数据库。
-
在
if (textBoxPassword.Text == password)行放一个断点,看看password变量保存了什么:1) 在弹出窗口中(悬停在变量上)或 2) 在Immediate Window[Debug -> Windows -> 立即] 输入?password并按Enter。
标签: c# sql sql-server linq