在c#中使用数据表填充数组

时间:2015-02-18 15:31:17

标签: c# arrays datatable

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

2 个答案:

答案 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"];
}