struct KlasStruct
{
public string Naam;
public int AantalUur;
}
KlasStruct[] Klas;
private void btnMaakLessenrooster_Click(object sender, EventArgs e)
{
string queryVakkenNaam = "SELECT Naam FROM Vakken";
OleDbDataAdapter dAdapterVakkenNaam = new OleDbDataAdapter(queryVakkenNaam,
@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Project Officieel\Project_MagnusCurriculum\Project_MagnusCurriculum\Project.accdb");
DataTable sourceVakkenNaam = new DataTable();
dAdapterVakkenNaam.Fill(sourceVakkenNaam);
for (int i = 0; i <= sourceVakkenNaam.Rows.Count - 1; i++)
{
// Exception happens here:
Klas[i].Naam = sourceVakkenNaam[i]["Naam"];
}
MessageBox.Show(Klas[0].Naam);
}
我得到的例外是:
错误:无法将带有[]的索引应用于类型的表达式 System.Data.DataColumn
答案 0 :(得分:0)
您使用的数组KlasStruct[] Klas;
不是初学者。你可以使用如下:
struct KlasStruct
{
public string Naam;
public int AantalUur;
}
List<KlasStruct> Klas =new List<KlasStruct>();
private void btnMaakLessenrooster_Click(object sender, EventArgs e)
{
//add a try catch
string queryVakkenNaam = "SELECT Naam FROM Vakken";
OleDbDataAdapter dAdapterVakkenNaam = new OleDbDataAdapter(queryVakkenNaam,
@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Project Officieel\Project_MagnusCurriculum\Project_MagnusCurriculum\Project.accdb");
DataTable sourceVakkenNaam = new DataTable();
dAdapterVakkenNaam.Fill(sourceVakkenNaam);
for (int i = 0; i <= sourceVakkenNaam.Rows.Count - 1; i++)
{
KlasStruct kStruct = new KlasStruct(); ;
kStruct.Naam = Convert.ToString(sourceVakkenNaam.Rows[i]["Naam"]);
Klas.Add(kStruct);
}
}
答案 1 :(得分:0)
我认为你错过了循环中的Rows
属性:
foreach (int i = 0; i < sourceVakkenNaam.Rows.Count; i++)
{
Klas[i].Naam = sourceVakkenNaam.Rows[i]["Naam"];
}