问题描述
我在下面有以下代码,我想要做的是在组合框上有我的数据库中的“ID”,这个 ID 代表管理员用来创建的每个调查细节,所以当用户去查看他们点击的调查时在comboBox 中的调查编号上,标签将根据数据库而变化。我用下面的代码进行了尝试,但不幸的是,它似乎只是随机抽取一个,如果有人可以提供帮助,那就太棒了。不一定要像下面这样,只要能用就行,
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);
}
}
解决方法
您可以尝试使用 Combobox 从数据库中搜索数据
我使用参数化查询来避免 SQL Injection
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);
}
}