19. juli 2005 - 11:20Der er
13 kommentarer og 1 løsning
Oracle Data Reader
Hvis jeg vil gennemløbe alle tabeller i en oracledatabase med "select * from tabelnavn" og gemme resultatet i en stringbuilder, hvad er så den bedste metode? er kommet fra til noget lignende: OracleDatareader oReader = cmd.executeReader(CommandBehavior.CloseConnection); while(oReader.Read()) { while(count < oReader.FieldCount) { builder.Append(oReader.GetValue(count).ToString()); } }
Nej, det ser ganske fornuftigt ud - bortset fra at du får samlet alle dine poster i en lang gang pløre uden hverken mellemrum imellem de enkelte poster eller linjeskift imellem de enkelte rækker.
Dog kan du vinde lidt hastighed ved ikke ar spørge på:
while(count < oReader.FieldCount)
- for hvert gennemløb. Denne post ændre sig jo ikke.
Bemærk: Valget af navnet "count" er måske en lille smule uheldigt valgt idet dette har en speciel betydning i forbindelse med SQL. Ikke at det vil resulterer i en fejl i dette tilfælde - allerhøjst en mulighed for misforståelser.
jeg skal bruge af oplsyningerne fra basen også ikke kun "count kolonnen" men til to forskellige ting. Alle posterne skal skrive i en lang pløre til en ark fil jvf en kravspecifikation jeg har. derfor bruges stringbuilder.
Når readeren er løbet til ende som har du vist ikke mulighed for at jøre den en gang til. Husk iøvrigt at kalde Close() på din reader, da du ellers kan komme ud for diverse ubehageligheder.
jeg har lukket readet og hvergang jeg har tilføjet noget til builder så incrementeres count (count++). indtil if(count == oReader.FieldCount) { count = 0; break; }
har lavet det helt om og fået valgt nogle specifikke select statements så det ikk bare er select * hver gang. Herefter bruger jeg dataAdapter.fill metoden. Med de størrelser databaser jeg skal have informationerne fra synes jeg at det kører hurtigere hvis man bruger dataAdapter kontra reader.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.