C# 将组合框(Access数据库)的SQL整数转换为c字符串

C# 将组合框(Access数据库)的SQL整数转换为c字符串,c#,sql,database,visual-studio,ms-access,C#,Sql,Database,Visual Studio,Ms Access,下面的代码给出了一个IndexOutfrange错误。 “Baujahr”是access数据库中的整数列 cbFahrzeugBJ.Items.Add(reader["Baujahr"].ToString()); 读者: OleDbDataReader reader = command.ExecuteReader(); while (reader.Read()) { cbFahrzeugBJ.Items.Add(reader["Baujahr"].ToString()); } 以及本

下面的代码给出了一个IndexOutfrange错误。 “Baujahr”是access数据库中的整数列

cbFahrzeugBJ.Items.Add(reader["Baujahr"].ToString());
读者:

OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
    cbFahrzeugBJ.Items.Add(reader["Baujahr"].ToString());
}
以及本程序的全部代码:

        try
        {
            connection.Open();

            OleDbCommand command = new OleDbCommand();
            command.Connection = connection;
            string query = "SELECT DISTINCT Typ FROM Autos WHERE Hersteller = @FahrzeugHersteller AND Modell = @FahrzeugModell AND Typ = @FahrzeugTyp;";
            command.CommandText = query;
            command.Parameters.Add("@FahrzeugHersteller", SqlDbType.Text);
            command.Parameters["@FahrzeugHersteller"].Value = cbFahrzeugHersteller.Text;
            command.Parameters.Add("@FahrzeugModell", SqlDbType.Text);
            command.Parameters["@FahrzeugModell"].Value = cbFahrzeugModell.Text;
            command.Parameters.Add("@FahrzeugTyp", SqlDbType.Text);
            command.Parameters["@FahrzeugTyp"].Value = cbFahrzeugTyp.Text;
            OleDbDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                cbFahrzeugBJ.Items.Add(reader.GetInt32("Baujahr").ToString());
            }

            connection.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error " + ex);
        }

您只在结果集中包含Typ列。如果要在DataReader中访问Baujahr,则必须在SELECT语句中包含它

i、 e:


请出示所有相关代码。。此定义的cbFahrzeugTyp在哪里?您是否使用调试器单步执行代码..?更改代码,然后在while循环之前添加此if读取器。HasRows{}在if中执行while循环代码block@MethodMan这是毫无意义的,如果没有行,Read返回false,编辑了我的问题文本。调试器在以下行中向我显示IndexOutfrange错误:cbFahrzeugBJ.Items.Addreader[Baujahr].ToString;您的查询是SELECT DISTINCT Typ FROM。。但是你试图访问Baujahr,它不在选择列表中。
 string query = "SELECT DISTINCT Typ, Baujahr FROM Autos WHERE Hersteller = @FahrzeugHersteller AND Modell = @FahrzeugModell AND Typ = @FahrzeugTyp;";