C# 用户选择组合框,然后根据数据库MS Access c创建标签

C# 用户选择组合框,然后根据数据库MS Access c创建标签,c#,ms-access,combobox,C#,Ms Access,Combobox,我有下面的代码,我试图做的是在组合框上有我的数据库的ID,这个ID代表管理员用来创建的每个调查细节,所以当用户去查看调查时,他们点击组合框中的调查编号,标签将根据数据库而改变。我用下面的代码进行了尝试,但不幸的是,它似乎只抓取了一个随机的,如果有人能帮助的话,那将是令人惊讶的。它不必像下面那样,只要它能工作 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { try {

我有下面的代码,我试图做的是在组合框上有我的数据库的ID,这个ID代表管理员用来创建的每个调查细节,所以当用户去查看调查时,他们点击组合框中的调查编号,标签将根据数据库而改变。我用下面的代码进行了尝试,但不幸的是,它似乎只抓取了一个随机的,如果有人能帮助的话,那将是令人惊讶的。它不必像下面那样,只要它能工作

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    try
    {
        con.Open();

        string query = "SELECT * FROM tbl_newsurvey ";
        OleDbCommand cmd = new OleDbCommand();
        cmd.Connection = con;
        cmd.CommandText = query;

        OleDbDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            string name = reader["txtname"].ToString();
            lblname.Text = name;
        }
        con.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error" + ex);
    }
}

您可以尝试使用组合框从数据库中搜索数据

我使用参数化查询来避免SQL注入


我认为应该在查询中使用WHERE子句,根据所选的组合框从数据库中获取数据Item@AndreiSolero像这样的?字符串查询=从tbl_newsurvey中选择*,其中ID='+comboBoxID.Text+';是的,这就是使用ComboBox从数据库检索数据的方法,但我建议您使用参数化查询来避免SQL注入您能告诉我您将如何做到这一点吗?
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    try
    {
        con.Open();

        string query = "SELECT * FROM tbl_newsurvey WHERE [ColumnName] = @ComboBoxValue";
        OleDbCommand cmd = new OleDbCommand();
        cmd.Connection = con;
        cmd.CommandText = query;
        cmd.Parameters.AddWithValue("@ComboBoxValue", comboBox1.SelectedIndex.ToString())
        OleDbDataReader reader = cmd.ExecuteReader();
        if (reader.Read() == true)
        {
            string name = reader["txtname"].ToString();
            lblname.Text = name;
        }
        con.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error" + ex);
    }
}