用c#中的数据表填充数组
Fill array with datatable in c#
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);
}
我得到的异常是:
Error: Cannot apply indexing with [] to an expression of type
System.Data.DataColumn
您正在使用的数组 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);
}
}
我认为你在循环中遗漏了 Rows
属性:
foreach (int i = 0; i < sourceVakkenNaam.Rows.Count; i++)
{
Klas[i].Naam = sourceVakkenNaam.Rows[i]["Naam"];
}
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);
}
我得到的异常是:
Error: Cannot apply indexing with [] to an expression of type System.Data.DataColumn
您正在使用的数组 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);
}
}
我认为你在循环中遗漏了 Rows
属性:
foreach (int i = 0; i < sourceVakkenNaam.Rows.Count; i++)
{
Klas[i].Naam = sourceVakkenNaam.Rows[i]["Naam"];
}