由于comboBox1导致的未处理异常是一个控件

时间:2013-12-13 13:23:32

标签: c# winforms

当我尝试登录时,由于comboBox1是一个控件,它会抛出未处理的异常

有人可以告诉我如何解决这个问题吗?

我正在制作ComboBox1,因为我想要一个带有用户名的下拉列表。

但要验证用户名和密码必须在组合框中选择用户名+密码如果密码与用户名=允许登录。

private void Button1Click(object sender, EventArgs e)
{
  var dt = new DataTable();
  const string Connectionstring = "Data Source=GARETH-PC1;Initial  Catalog=Genres;Integrated Security=True";
  using (var con = new SqlConnection(Connectionstring))
  {
    con.Open();
    var query = "Select Username From Login Where Username ='" + comboBox1 + "' and Password ='" + textBox2.Text + "'";
    using (var sda = new SqlDataAdapter(query, con))
    {
      sda.Fill(dt);
    }
  }

  if (dt.Rows[0].ItemArray.GetValue(0).ToString() == "1")
  {
    Hide();
    var ss = new Main();
    ss.Show();
  }
  else
  {
    MessageBox.Show("Invalid Username or Password");
  }
}

1 个答案:

答案 0 :(得分:1)

在这一行:

var query = "Select Username From Login Where Username ='" + comboBox1 
    + "' and Password ='" + textBox2.Text + "'";

您尝试将StringControl连接在一起。 (ComboBoxControl的子类)这是不允许的。您需要使用的是SelectedText的{​​{1}}属性:

ComboBox

顺便说一下,我强烈建议您使用预备语句,以确保用户不会在用户名和密码字段中输入自己的SQL代码,并可能危及数据库的安全性。这通常涉及使用参数名称(val0,val1等)设置查询字符串,而不是原始文本var query = "Select Username From Login Where Username ='" + comboBox1.SelectedText + "' and Password ='" + textBox2.Text + "'"; comboBox1.SelectedText

有关Microsoft SQL中预准备语句的信息:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.prepare(v=vs.110).aspx

有关MySQL中预准备语句的信息:http://dev.mysql.com/doc/refman/5.0/en/connector-net-programming-prepared.html