C# 将组合框(Access数据库)的SQL整数转换为c字符串
下面的代码给出了一个IndexOutfrange错误。 “Baujahr”是access数据库中的整数列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()); } 以及本
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;";