Selv om det ikke er ett-trinns løsning for å konvertere en DataReader direkte inn i et datasett innenfor Microsoft Dot Net Framework , kan du gjennomgå en multi -trinns prosess med å transformere et program ved hjelp DataReader tilgang til én bruker et datasett . Både DataReader og datasett er utledet ved hjelp av en kommando som omslutter en database spørring . En DataReader returnerer søkeresultatene én rad om gangen mens resterende koblet til databasen . I kontrast , er et datasett selvstendig og innehar alle data returnert fra spørringen . For ytelse , bruk DataReader , for allsidighet , er Dataset generelt et bedre alternativ . Du trenger:
Microsoft Visual studio eller Visual Basic Express ( 2005 eller senere )
Visual Basic eller C #-kode som bruker en DataReader objekt
Noe kjennskap til Dot Net Framework data tilgang metoder
Vis mer Instruksjoner
en
Finn kode som skaper DataReader . I Visual Basic , ser koden slik ut : en
01 : Dim conn Som SqlConnection = Ingenting
02 : Dim cmd Som SqlCommand
03 : Dim rdr Som SqlDataReader = ingenting
04 : field1 Dim , felt2 As String
05 : en
06 : Prøv
07 : conn = CreateConnection ( )
< p > 08 : cmd = Ny SqlCommand ( " procName " , conn )
09 : cmd.CommandType = CommandType.StoredProcedure
10 : en
11 : rdr = cmd.ExecuteReader
12 : Mens rdr.Read
13 : field1 = rdr.GetString ( 0 )
14 : felt2 = rdr.GetString ( 1 )
15 : ...
16 : Slutt Mens
17 : en
18 : Catch ex As Exception
19 : Kast
20 : en
21 : Endelig
22 : rdr.Close ( )
23 : conn.Close ( )
24 : Slutt Prøv
Merk at i dette eksempelet , er SQL -versjonen av DataReader brukes . Samme kode som fungerer for OLEDB og andre DataReader klasser
2
Bytt erklæringen av DataReader i linje 3 med en ny erklæring for et datasett som heter ds : .
01 : Dim conn som SqlConnection = Ingenting
02 : Dim cmd som SqlCommand
03 > Dim ds som nye datasett
04 : field1 Dim , felt2 As String
05 :
3
Bytt referanser til DataReader i linjene 11 til 16 med ny kode som skaper og setter opp en DataAdapter : en
06 : Prøv
< p > 07 : conn = CreateConnection ( )
08 : cmd = Ny SqlCommand ( " procName " , conn )
09 : cmd.CommandType = CommandType.StoredProcedure
10 :
11 > Dim dap som ny SqlDataAdapter
12 > dap.SelectCommand = cmd
SqlDataAdapter er en hjelper objekt brukes til å flytte data frem og tilbake fra et datasett . Etter at objektet blir opprettet, blir SelectCommand eiendommen satt til samme kommandoen objektet brukes til å lage DataReader
4
Bruk DataAdapter for Fill metode for å fylle datasett : .
13> dap.Fill (ds )
5
Lukk tilkoblingen før bearbeiding av data , siden den datasett nå inneholder alle dataene som returneres av DataAdapter , lukke tilkoblingen er god praksis . Husk også å fjerne linjen som lukker DataReader ( linje 22 ) : en
18 : Catch ex As Exception
19 : Kast
20 : en
21 : Endelig
23 : conn.Close ( )
24 : Slutt Prøv
6
Process data , hente den fra Row samling av datasett som følger: .
25 > For Hver rad Som DataRow I ds.Tables ( 0 ) Rader
26 > field1 = rad ( " felt1 ")
27 > felt2 = rad ( " felt2 ")
28 > ...
29 > ...
30 > Neste