jasperkennis
Gebruiker
- Lid geworden
- 3 dec 2009
- Berichten
- 6
Hallo,
Onderstaande code is in staat de resultaten van een query direct naar een template te parsen. De key-words in de template zijn hetzelfde als de namen van de tabellen in db. De code genereert een hashtable waarin de key gelijk is aan de keywords, en vervangt die met de values uit de resultaten van de query.
Maar het is niet echt mooie code geworden
3 DB calls voor een handeling is eigenlijk niet acceptabel. Ziet iemand ruimte voor optimalisatie of heeft iemand suggesties om dit beter te doen?
[CPP] // Eerst het aantal kolommen bepalen:
this.sql.SelectCommand = query;
IEnumerable resultaten = this.sql.Select ( DataSourceSelectArguments.Empty );
int teller = 1;
foreach ( DataRowView resultaat in resultaten )
{
teller++;
}
// Door de resultaten heen loopen:
SqlCommand cmd = new SqlCommand ( query , this.connectie );
this.connectie.Open ( );
SqlDataReader dr = cmd.ExecuteReader ( CommandBehavior.CloseConnection );
for ( int i = 0 ; i <= teller ; i++ )
{
string kolom_key = dr.GetName ( i ).ToString ( );
this.data_rij.Add ( kolom_key , "" );
}
this.connectie.Close ( );
ICollection data_rij_keys = this.data_rij.Keys;
foreach ( DataRowView resultaat in resultaten )
{
Hashtable definitieve_output_rij = new Hashtable ( );
// De values bij de keys zoeken in invoeren:
foreach ( string data_rij_key in data_rij_keys )
{
definitieve_output_rij[data_rij_key] = resultaat[data_rij_key];
}
this.data_set.Add ( definitieve_output_rij );
}[/CPP]
Alvast bedankt,
Jasper
Onderstaande code is in staat de resultaten van een query direct naar een template te parsen. De key-words in de template zijn hetzelfde als de namen van de tabellen in db. De code genereert een hashtable waarin de key gelijk is aan de keywords, en vervangt die met de values uit de resultaten van de query.
Maar het is niet echt mooie code geworden

[CPP] // Eerst het aantal kolommen bepalen:
this.sql.SelectCommand = query;
IEnumerable resultaten = this.sql.Select ( DataSourceSelectArguments.Empty );
int teller = 1;
foreach ( DataRowView resultaat in resultaten )
{
teller++;
}
// Door de resultaten heen loopen:
SqlCommand cmd = new SqlCommand ( query , this.connectie );
this.connectie.Open ( );
SqlDataReader dr = cmd.ExecuteReader ( CommandBehavior.CloseConnection );
for ( int i = 0 ; i <= teller ; i++ )
{
string kolom_key = dr.GetName ( i ).ToString ( );
this.data_rij.Add ( kolom_key , "" );
}
this.connectie.Close ( );
ICollection data_rij_keys = this.data_rij.Keys;
foreach ( DataRowView resultaat in resultaten )
{
Hashtable definitieve_output_rij = new Hashtable ( );
// De values bij de keys zoeken in invoeren:
foreach ( string data_rij_key in data_rij_keys )
{
definitieve_output_rij[data_rij_key] = resultaat[data_rij_key];
}
this.data_set.Add ( definitieve_output_rij );
}[/CPP]
Alvast bedankt,
Jasper