下面的代码给出了一个IndexOutOfRange错误。
“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列。如果要在Baujahr语句中访问它,则必须在SELECT语句中包含DataReader
即:

 string query = "SELECT DISTINCT Typ, Baujahr FROM Autos WHERE Hersteller = @FahrzeugHersteller AND Modell = @FahrzeugModell AND Typ = @FahrzeugTyp;";

关于c# - 将SQL Integer转换为组合框的C#字符串(Access数据库),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42728278/

10-11 02:02