C# 显示不需要的结果的MessageBox
我对开发软件这一行还不熟悉。所以这听起来可能很傻 我在大学里正在研究开发一个简单的登录系统,我想加快一点速度,我的教授可能有点杂乱无章,这会占用我们学习编程知识的时间 我可以让程序运行,只有在用户名和密码有效的情况下才能打开主窗体 在我研究并制作将数据写入数据库的注册按钮之前,消息框工作正常 但现在,我似乎无法让消息框显示是否成功登录 登录按钮的代码如下所示:C# 显示不需要的结果的MessageBox,c#,messagebox,C#,Messagebox,我对开发软件这一行还不熟悉。所以这听起来可能很傻 我在大学里正在研究开发一个简单的登录系统,我想加快一点速度,我的教授可能有点杂乱无章,这会占用我们学习编程知识的时间 我可以让程序运行,只有在用户名和密码有效的情况下才能打开主窗体 在我研究并制作将数据写入数据库的注册按钮之前,消息框工作正常 但现在,我似乎无法让消息框显示是否成功登录 登录按钮的代码如下所示: private void VLogin_Click(object sender, EventArgs e) { try
private void VLogin_Click(object sender, EventArgs e)
{
try
{
string ConnectionString = "User ID=*****;Password=*******;" +
"Database=C:\\Users\\marqu_000\\Documents\\WindowsFormsApplication13\\Sistema.GDB;" +
"DataSource=localhost";
FbConnection addDetailsConnection = new FbConnection(ConnectionString);
addDetailsConnection.Open();
string SQLCommandText = "select * from LOGIN where USERNAME=@username and PASSWORD=@password";
FbCommand addDetailsCommand = new FbCommand(SQLCommandText, addDetailsConnection);
addDetailsCommand.Parameters.Add("@username", FbDbType.VarChar, 15).Value = userName.Text;
addDetailsCommand.Parameters.Add("@password", FbDbType.VarChar, 15).Value = userPassword.Text;
FbDataReader reader = addDetailsCommand.ExecuteReader();
while (reader.Read())
{
this.Visible = false;
MainWin MWin = new MainWin();
MWin.ShowDialog();
Application.Exit();
}
MessageBox.Show("Login Successful");
}
catch (Exception x)
{
MessageBox.Show("Invalid username or password");
MessageBox.Show(x.Message);
}
}
这是我的注册按钮代码:
private void registerUser_Click(object sender, EventArgs e)
{
try
{
string ConnectionString = "User ID=****;Password=****;" +
"Database=C:\\Users\\marqu_000\\Documents\\WindowsFormsApplication13\\Sistema.GDB;" +
"DataSource=localhost";
FbConnection addDetailsConnection = new FbConnection(ConnectionString);
addDetailsConnection.Open();
FbCommand SQLCommandTextInsert = new FbCommand("INSERT INTO LOGIN(USERNAME, PASSWORD, LEVEL) VALUES (@username,@password,@level)", addDetailsConnection);
SQLCommandTextInsert.Parameters.AddWithValue("username", registerUsername.Text);
SQLCommandTextInsert.Parameters.AddWithValue("password", registerPassword.Text);
SQLCommandTextInsert.Parameters.AddWithValue("level", registerLevel.Text);
SQLCommandTextInsert.ExecuteNonQuery();
MessageBox.Show("Registration completed!");
}
catch (FbException fbex)
{
//throw fbex;
MessageBox.Show("Invalid information, please verify!");
MessageBox.Show(fbex.Message);
}
}
如果那里有什么无用的线条,以及制作这些东西的最简单方法,我想知道。
我提前感谢大家的帮助。
Marco.
ShowDialog
是一个阻塞调用,这意味着在该调用完成之前不会运行任何代码。在这种情况下,当您的MWin关闭时。在调用ShowDialog或从MWin调用它之前,需要显示成功消息
只有在发生异常时,才会显示登录失败消息。我认为如果我正确地阅读了您的代码,如果阅读器没有返回任何结果(登录失败),那么您将显示“登录成功”,然后不执行其他操作
您可以使用if
来确定数据库返回的结果和登录失败是否是您的else
条件。我终于成功了!
我搜索了如何使用IF进行验证,并且可以这样做。我的代码现在是这样的:
try
{
string ConnectionString = "User ID=*****;Password=*******;" +
"Database=C:\\Users\\marqu_000\\Documents\\WindowsFormsApplication13\\Sistema.GDB;" +
"DataSource=localhost";
FbConnection addDetailsConnection = new FbConnection(ConnectionString);
addDetailsConnection.Open();
string SQLCommandText = "select * from LOGIN where USERNAME=@username and PASSWORD=@password";
FbCommand addDetailsCommand = new FbCommand(SQLCommandText, addDetailsConnection);
addDetailsCommand.Parameters.Add("@username", FbDbType.VarChar, 15).Value = userName.Text;
addDetailsCommand.Parameters.Add("@password", FbDbType.VarChar, 15).Value = userPassword.Text;
FbDataReader reader = addDetailsCommand.ExecuteReader();
if (reader.Read())
{
this.Visible = false;
MessageBox.Show("Login Successful!");
MainWin MWin = new MainWin();
MWin.ShowDialog();
}
else
{
MessageBox.Show("Invalid username or password!");
}
欢迎来到SO。我已编辑您的问题,以从连接字符串中删除用户名和密码。请不要在以后的问题中包含类似的项目。哪个消息框不会显示?是在
ShowDialog
阻塞调用和应用程序退出后的一个吗?使用异常作为控制程序流的一种方式并不是一种很好的方法。请在VLogin\u方法的开头放置一个断点,单击方法,然后单击F5。您可以一步一步地浏览代码,看看到底发生了什么
在与读卡器的循环中,因此如果数据库返回了匹配项,则退出程序。这是你的意图吗?@Tim-如果这确实是我认为的“错误”消息框,那么我认为它只需要在ShowDialog
之前,我猜MainWin
只是他想在成功登录后打开的窗口,当它关闭时,然后就可以关闭程序了。我照你说的做了,把“MessageBox”移到了“ShowDialog”之前。你愿意举一个if的例子吗?