下面的代码给出了一个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/