我遇到了以下无法解决的问题。使用组合框,列出所有数据库表字段名称,我想读出在组合框中选择的值并将其显示在文本框中。示例:当我选择组合框值Rent时,读者应获取与Rent字段名称相关的值。
首先我尝试将所有数据库字段名称手动添加到我的组合框中,因此在items->集合中我只需手动输入所有字段名称。
然后我使用此代码输出选定的字段名称值:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string FieldName = (string)comboBox1.SelectedItem;
textBox15.Text = FieldName;
try
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
string query = "select [" + comboBox1.Text + "] from Expenses where Month='January'";
command.CommandText = query;
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
textBox14.Text = (reader[comboBox1.Text].ToString());
}
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error" + ex);
}
}
这确实奏效了。虽然那时我想通过读取所有字段名称然后将它们自动放入组合框中来使我的组合框值更灵活(所以现在用户也可以添加字段名称),我删除了集合中的手动键入的字段名称组合框。
使用以下代码自动添加字段名称:
OleDbCommand command2 = new OleDbCommand();
command2.Connection = connection;
string query2 = "select * from Expenses where Month='January'";
command2.CommandText = query2;
OleDbDataReader reader2 = command2.ExecuteReader();
while (reader2.Read())
{
for (int i = 0; i < reader2.FieldCount; i++)
{
comboBox1.Items.Add(reader2.GetName(i));
}
}
connection.Close();
使用这种方式将我的字段名称添加到组合框中效果很好,但由于某种原因,第一段代码(在文本框中显示字段名称值)在更改时不再起作用。
我现在得到的错误是:没有给出一个或多个必需参数的值...在第642行,即OleDbDataReader reader = command.ExecuteReader();
任何人都知道这个功能不再起作用的原因是什么?