我花了很多时间在互联网上搜索答案,但什么都想不出来。基本上我有一个非常小的数据库,总共包含 5 个表。我现在的问题只涉及其中两个。我有一个名为 Model 的表(是的,我知道我在命名此表时做得不好。很快就会尝试重命名它)。这是模型的样子。 型号表
Make ID 是指 Makes 表中的唯一 ID。这是表 Make 的样子。 做表
我有一个使用 Visual Studios 2012 在 C# 中创建的 Windows 窗体应用程序。该数据库是在该项目中创建的。我有一个表格,其中包括两个组合框。第一个列出了 Makes 表中的信息。它显示了 3 个不同的汽车品牌。第二个组合框显示了与另一个表不同的模型。我可以得到第一个组合框来显示所有品牌。我可以获得第二个组合框来显示所有模型。但我想要的是,如果他们在第一个框中选择福特,它只会在第二个框中显示福特。当他们在第一个框中选择 Ford 时,我需要以某种方式存储与 Ford 关联的唯一 ID,然后通过引用 Model 表中的 Make ID 列来使用它来过滤第二个框。我已在 Access 中完成此操作,但无法在此处使用。这是我的代码
private void enterNewVehcileForm_Load(object sender, EventArgs e)
{
vinAutoPopulateTextBox.Text = mainMenu.VIN;
mainMenu.connection.Open();
SqlCeCommand cs = new SqlCeCommand("SELECT * FROM Makes", mainMenu.connection);
SqlCeDataReader dr = cs.ExecuteReader();
while (dr.Read())
{
vehicleMakeComboBox.Items.Add(dr["Car Brand"]);
}
dr.Close();
dr.Dispose();
mainMenu.connection.Close();
}
这很好地填充了第一个框。我在下拉框中看到福特、雪佛兰、道奇。但是,如果我在第二个盒子上尝试这个,它就行不通了。
private void vehicleMakeComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
int num = vehicleMakeComboBox.SelectedIndex;
mainMenu.connection.Open();
SqlCeCommand modelSearch = new SqlCeCommand("SELECT * FROM Model WHERE [Make ID] = @num", mainMenu.connection);
SqlCeDataReader modelRead = modelSearch.ExecuteReader();
while (modelRead.Read())
{
vehicleModelComboBox.Items.Add(modelRead["Model"]);
}
modelRead.Close();
modelRead.Dispose();
mainMenu.connection.Close();
我在这行收到一个错误,while (modelRead.read())
它说缺少一个参数。
任何人都可以帮助我或指出我正确的方向。这是我第一次搞砸这个,所以我可能做错了一切。