Ik ben bezig met het maken van een website die zijn gegevens uit een access database haalt.
Ik heb alleen een probleem met queries. Als ik een query uitvoer koppel ik daar een OLEDbDataReader aan om dan rij per rij de uitvoer uit te lezen. Het probleem is dat ik dan per rij weer een tweetal extra queries wil doen. Dit is niet mogelijk met de OLEDbDataReader ism met de OLEDbConnection. Nu kwam ik samen met mijn projectgenoot op het idee om dan de uitvoer van de query in een 2 dimensionale array van object te zetten en die terug te geven. Nu stoten we alleen op een probleem bij het definieren van dit type. Hij wil van tevoren al weten hoeveel rijen de uitvoer krijgt. De DataReader weet dit van tevoren niet. Hier kom je pas achter als je door de query heenloopt. Weet iemand hoe ik dit op deze manier toch werkend kan krijgen?
Code zoals ik het nu heb: (Rdr heb ik public gedeclareerd, is dus OLEDbDataReader. Conn hetzelfde, is een OLEDbConnection.
Ik heb alleen een probleem met queries. Als ik een query uitvoer koppel ik daar een OLEDbDataReader aan om dan rij per rij de uitvoer uit te lezen. Het probleem is dat ik dan per rij weer een tweetal extra queries wil doen. Dit is niet mogelijk met de OLEDbDataReader ism met de OLEDbConnection. Nu kwam ik samen met mijn projectgenoot op het idee om dan de uitvoer van de query in een 2 dimensionale array van object te zetten en die terug te geven. Nu stoten we alleen op een probleem bij het definieren van dit type. Hij wil van tevoren al weten hoeveel rijen de uitvoer krijgt. De DataReader weet dit van tevoren niet. Hier kom je pas achter als je door de query heenloopt. Weet iemand hoe ik dit op deze manier toch werkend kan krijgen?
Code zoals ik het nu heb: (Rdr heb ik public gedeclareerd, is dus OLEDbDataReader. Conn hetzelfde, is een OLEDbConnection.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| public Object[][] Execute_Query(string Query)
{
OleDbCommand Cmd = new OleDbCommand();
Cmd.Connection = Conn;
Cmd.CommandType = System.Data.CommandType.Text;
Cmd.CommandText = Query;
Rdr = Cmd.ExecuteReader(System.Data.CommandBehavior.Default);
Object[,] tempAnswer = new Object[][]; //dit moet dus goed
int row = 0;
while (Rdr.Read())
{
tempAnswer[row] = new Object[Rdr.FieldCount];
Rdr.GetValues(tempAnswer[row]);
row++;
}
Rdr.Close();
return tempAnswer;
} |