当我尝试登录时,由于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");
}
}
答案 0 :(得分:1)
在这一行:
var query = "Select Username From Login Where Username ='" + comboBox1
+ "' and Password ='" + textBox2.Text + "'";
您尝试将String
和Control
连接在一起。 (ComboBox
是Control
的子类)这是不允许的。您需要使用的是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