我正在尝试编写一个从表中提取列的查询,然后输出到下拉列表。我正在使用一长串if else语句,但这并没有实现我的目标,即能够向表中添加另一列(已经添加)而不向查找添加另一个else子句。
我有两个下拉菜单。第二个需要根据第一个选择进行更改。两个下拉列表都使用单独的表,因此我可以将第二个表中的列命名为与第一个表的一列中的字符串相同。在第一个下拉列表中选择的项目与第二个下拉列表中第二个表中的列名称相同。
我正在使用Visual Studio 2015和SQL 2012。
这是我现在的代码,我一直在尝试参数,但我不能完全让它工作,它是说变量不在表中。我知道[systemItem]不是实际运行它的最佳方式,我编辑它以便你可以看到我想要做的事情。 ORDER BY用于消除在下拉列表中显示的空格(在if else的大量列表中工作正常)。先谢谢你们!
systemItem = firstDropdown.Text;
secondDropdown.Items.Clear();
SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;Connect Timeout=30");
conn.Open();
SqlCommand cm = new SqlCommand("SELECT [systemItem] FROM [table] WHERE [systemItem]IS NOT NULL ORDER BY [systemItem] ASC AND [systemItem] =@sItem", conn);
SqlParameter param = new SqlParameter();
param.ParameterName = "@sItem";
param.Value = systemItem;
cm.Parameters.Add(param);
{
SqlDataAdapter da = new SqlDataAdapter(cm);
DataTable dt = new DataTable();
da.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
secondDropdown.Items.Add(dr[sItem]);
secondDropdown.SelectedIndex = 0;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
conn.Close();
编辑:修改其中一个下拉菜单的名称以反映我要清除的内容。