C# 单击按钮时出现参数无效错误(C、VisualStudio、WinForms)
我有一个登录表单,它指向一个主菜单表单。但是当我点击登录按钮时,我得到一个参数无效的错误。这之前没有出现,只是从昨晚开始的。这是我的登录和主菜单表单及其代码 登录: 代码: 主菜单: 代码:C# 单击按钮时出现参数无效错误(C、VisualStudio、WinForms),c#,visual-studio,winforms,visual-studio-2013,C#,Visual Studio,Winforms,Visual Studio 2013,我有一个登录表单,它指向一个主菜单表单。但是当我点击登录按钮时,我得到一个参数无效的错误。这之前没有出现,只是从昨晚开始的。这是我的登录和主菜单表单及其代码 登录: 代码: 主菜单: 代码: 顺便说一下,这幅画在一个画框里。谢谢你的帮助。即使您只是解释了参数无效的确切含义。根据我的测试,您的代码只适用于第一个用户名和密码。我们需要使用while语句在数据库中创建一个循环 我已经修改了你的代码,现在它运行良好 请检查以下代码 private void button1_Click(object s
顺便说一下,这幅画在一个画框里。谢谢你的帮助。即使您只是解释了参数无效的确切含义。根据我的测试,您的代码只适用于第一个用户名和密码。我们需要使用while语句在数据库中创建一个循环 我已经修改了你的代码,现在它运行良好 请检查以下代码
private void button1_Click(object sender, EventArgs e)
{
string constr = @"";
SqlConnection con = new SqlConnection(constr);
try
{
con.Open();
string sql = "SELECT * FROM Details where UserN=@UserN and PassW=@PassW";
SqlParameter pUser = new SqlParameter("@UserN", txtUserName.Text);
SqlParameter pPass = new SqlParameter("@PassW", txtPwd.Text);
SqlCommand com = new SqlCommand(sql, con);
com.Parameters.Add(pUser);
com.Parameters.Add(pPass);
SqlDataReader dr = com.ExecuteReader();
if(dr.Read())
{
MainMenu MainMenu = new MainMenu();
this.Hide();
MainMenu.Show();
}
else
{
MessageBox.Show("Username or Password is incorrect");
txtPwd.Text = "";
txtUserName.Text = "";
txtUserName.Focus();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
}
海报在这里!事实证明,我一直犯这个错误的原因是因为我的图像太大了。对于任何可能最终阅读本文的初学者程序员:如果您遇到此错误,请查看您的图像详细信息。旁注:您显然以明文形式存储密码。你不应该那样做。只存储其中的一些散列。查询中没有WHERE子句。这意味着您需要检查随机登录,而不一定是与用户输入的名称对应的登录。@stickybit密码的文本框具有密码字符*。我知道没有WHERE,但这是因为这个系统只供一台计算机中的一个用户使用,所以我认为它不需要WHERE,因为只有一条记录。我没有谈论文本框的回声,而是数据库中存储的密码。您可以使用调试器在代码中找到异常发生的确切位置。首先,在con.Open上设置断点;然后运行应用程序并逐步使用调试器,查看哪一行产生了错误。关于加密密码的观点也是有效的。看看盐散列法。
public partial class frmMainMenu : Form
{
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=F:\DinerXP\DinerXP\Details.mdf;Integrated Security=True");
SqlCommand com;
//Globally creating objects from Forms Class to use in all Click events
frmAbout About = new frmAbout();
frmBank Bank = new frmBank();
frmReservations Reservations = new frmReservations();
frmOrders Orders = new frmOrders();
frmEmployees Employees = new frmEmployees();
frmInvMng Inventory = new frmInvMng();
frmMenus Menus = new frmMenus();
frmTodaysMenu TodaysMenu = new frmTodaysMenu();
public frmMainMenu()
{
InitializeComponent();
}
//Close application on FormClosed
private void frmMainMenu_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
//Change Header Label:
private void frmMainMenu_Load(object sender, EventArgs e)
{
int income;
con.Open();
string sql = "select Name from Details";
com = new SqlCommand(sql, con);
SqlDataReader dr;
dr = com.ExecuteReader();
dr.Read();
lblRestNa.Text = dr["Name"].ToString();
con.Close();
}
//Button-Click Events:
private void btnReserv_Click(object sender, EventArgs e)
{
Reservations.Show();
this.Hide();
}
private void btnTodaysMenu_Click(object sender, EventArgs e)
{
this.Hide();
TodaysMenu.Show();
}
private void btnBank_Click(object sender, EventArgs e)
{
this.Hide();
Bank.Show();
}
private void btnOrders_Click(object sender, EventArgs e)
{
this.Hide();
Orders.Show();
}
private void btnEmployees_Click(object sender, EventArgs e)
{
this.Hide();
Employees.Show();
}
private void btnInventory_Click(object sender, EventArgs e)
{
this.Hide();
Inventory.Show();
}
private void btnMenus_Click(object sender, EventArgs e)
{
this.Hide();
Menus.Show();
}
private void btnAbout_Click(object sender, EventArgs e)
{
this.Hide();
About.Show();
}
//Picture click Events:
private void picReserv_Click(object sender, EventArgs e)
{
this.Hide();
Reservations.Show();
}
private void picTodaysMenu_Click(object sender, EventArgs e)
{
this.Hide();
TodaysMenu.Show();
}
private void picBank_Click(object sender, EventArgs e)
{
this.Hide();
Bank.Show();
}
private void picOrders_Click(object sender, EventArgs e)
{
this.Hide();
Orders.Show();
}
private void picEmployees_Click(object sender, EventArgs e)
{
this.Hide();
Employees.Show();
}
private void picInventory_Click(object sender, EventArgs e)
{
this.Hide();
Inventory.Show();
}
private void picMenus_Click(object sender, EventArgs e)
{
this.Hide();
Menus.Show();
}
private void picInfo_Click(object sender, EventArgs e)
{
this.Hide();
About.Show();
}
//Label Click Events:
private void lblReservations_Click(object sender, EventArgs e)
{
this.Hide();
Reservations.Show();
}
private void lblTodaysMenu_Click(object sender, EventArgs e)
{
this.Hide();
TodaysMenu.Show();
}
private void lblBank_Click(object sender, EventArgs e)
{
this.Hide();
Bank.Show();
}
private void lblOrders_Click(object sender, EventArgs e)
{
this.Hide();
Orders.Show();
}
private void lblEmployees_Click(object sender, EventArgs e)
{
this.Hide();
Employees.Show();
}
private void lblInvMng_Click(object sender, EventArgs e)
{
this.Hide();
Inventory.Show();
}
private void lblMenus_Click(object sender, EventArgs e)
{
this.Hide();
Menus.Show();
}
private void lblAbout_Click(object sender, EventArgs e)
{
this.Hide();
About.Show();
}
}
private void button1_Click(object sender, EventArgs e)
{
string constr = @"";
SqlConnection con = new SqlConnection(constr);
try
{
con.Open();
string sql = "SELECT * FROM Details where UserN=@UserN and PassW=@PassW";
SqlParameter pUser = new SqlParameter("@UserN", txtUserName.Text);
SqlParameter pPass = new SqlParameter("@PassW", txtPwd.Text);
SqlCommand com = new SqlCommand(sql, con);
com.Parameters.Add(pUser);
com.Parameters.Add(pPass);
SqlDataReader dr = com.ExecuteReader();
if(dr.Read())
{
MainMenu MainMenu = new MainMenu();
this.Hide();
MainMenu.Show();
}
else
{
MessageBox.Show("Username or Password is incorrect");
txtPwd.Text = "";
txtUserName.Text = "";
txtUserName.Focus();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
}