如何在组合框所选项目的数据库中插入文本框值
本文关键字:数据库 插入文本 项目 选项 组合 | 更新日期: 2023-09-27 18:16:51
我设计了一个登录表单,其中我使用了combobox1, textbox1, textbox2和button。当我在组合框中选择"Admin"时,textbox1和textbox2中的用户名和密码将从数据库中的Admin表中检查,如果用户名和密码正确,则显示Admin表单。
我该怎么做?
代码:private void button1_Click(object sender, EventArgs e)
{
if (comboBox1.SelectedText == "Admin")
{
SqlCommand cmd = new SqlCommand("select * from Admin");
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
textBox1.Text = dr["Username"].ToString();
textBox2.Text = dr["Password"].ToString();
Admin ad = new Admin();
ad.ShowDialog();
}
}
}
根据您的代码,您实际上试图从数据库中的值设置textbox1
和textbox2
的值。我猜你是在验证它们是否相等?
如果是这样的话,你最好修改你的查询,这样它只根据用户输入的详细信息返回Admin的详细信息,而不是返回Admin表中的所有内容。
同时,根据Alfie Goodacre的回答,你想要SelectedItem
。
private void button1_Click(object sender, EventArgs e)
{
if (comboBox1.SelectedItem.ToString() == "Admin")
{
SqlCommand cmd = new SqlCommand("select *
from Admin
where Username = @UN and
Password = @PW");
var unParam = new SqlParameter("@UN", SqlDbType.VarChar);
unParam.Value = textbox1.text;
cmd.Parameters.Add(unParam);
var pwParam = new SqlParameter("@PW", SqlDbType.VarChar);
pwParam.Value = textbox2.text;
cmd.Parameters.Add(pwParam);
SqlDataReader dr = cmd.ExecuteReader();
//check if any data has returned based on the user inputs
if (dr.HasRows)
{
if (dr.Read())
{
Admin ad = new Admin(); ad.ShowDialog();
}
}
}
}
您不希望选中的文本作为您的检查,您想要SelectedItem
-这是因为Button_Click
事件从框中移除焦点,有效地取消选中其中的任何文本。
private void button1_Click(object sender, EventArgs e)
{
if (comboBox1.SelectedItem.ToString() == "Admin")
{
SqlCommand cmd = new SqlCommand("select * from Admin");
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
textBox1.Text = dr["Username"].ToString();
textBox2.Text = dr["Password"].ToString();
Admin ad = new Admin(); ad.ShowDialog();
}
}
}