Även om det finns ingen one- steg -lösning för att konvertera en DataReader direkt in i ett DataSet inom Microsoft Dot Net Framework , kan du genomgå en process i flera steg för att omvandla ett program med DataReader tillgång till en med ett DataSet . Både DataReader och DataSet har härletts med ett kommando som kapslar in en databas fråga . En DataReader returnerar frågeresultat en rad i taget samtidigt som den är ansluten till databasen . I motsats härtill är en DataSet sluten och rymmer alla de data som returneras från frågan. För prestanda , använd DataReader , för mångsidighet , är Dataset allmänhet ett bättre alternativ . Saker du behöver
Microsoft Visual Studio eller Visual Basic Express ( 2005 eller senare ) Review, Visual Basic eller C # -kod som använder en DataReader objekt
Viss kunskap om Dot Net Framework dataåtkomstmetoder
Visa fler instruktioner
1
Leta reda på koden som skapar DataReader . I Visual Basic , ser koden ut så här :
01 : Dim conn Som SqlConnection = Nothing
02 : Dim cmd Som SqlCommand
03 : Dim rdr Som SqlDataReader = ingenting
04 : Dim fält1 , fält2 As String
05 :
06 : Försök
07 : conn = CreateConnection ( ) katalog
08 : cmd = New SqlCommand ( " procName " , conn ) katalog
09 : cmd.CommandType = CommandType.StoredProcedure
10 :
11 : RDR = cmd.ExecuteReader
12 : Medan rdr.Read
13 : fält1 = rdr.GetString ( 0 ) katalog
14 : fält2 = rdr.GetString ( 1 ) katalog
15 : ...
16 : Slut Medan
17 :
18 : Catch ex Som Exception
19 : Kasta
20 :
21 : Äntligen
22 : rdr.Close ( ) katalog
23 : conn.Close ( ) katalog
24 : End Försök
Observera att i detta exempel , är SQL- versionen av DataReader använts. Samma kod fungerar för OLEDB och andra klasser DataReader
2
Ersätt deklarationen av DataReader i linje 3 med en ny deklaration för ett DataSet heter ds : .
01 : Dim conn som SqlConnection = Nothing
02 : Dim cmd som SqlCommand
03 > Dim ds som ny DataSet
04 : Dim fält1 , fält2 As String
05 : Addera 3
Ersätt hänvisningarna till DataReader i raderna 11 till 16 med ny kod som skapar och sätter upp en DataAdapter :
06 : Försök
07 : conn = CreateConnection ( ) katalog
08 : cmd = New SqlCommand ( " procName " , conn ) katalog
09 : cmd.CommandType = CommandType.StoredProcedure
10 :
11 > Dim DAP som Ny SqlDataAdapter
12 > dap.SelectCommand = cmd
SqlDataAdapter är en hjälpare objekt som används för att flytta data fram och tillbaka från ett DataSet . Efter objektet blir skapade , är SelectCommand egenskapen inställd på samma kommando objektet används för att skapa DataReader
4
Använd DataAdapter fyllning metod att fylla DataSet : .
13 > dap.Fill ( ds )
5
Stäng anslutningen innan behandlingen av uppgifterna , eftersom DataSet nu innehåller alla data som returneras av DataAdapter , stänger anslutningen är god praxis . Kom också ihåg att ta bort raden som stänger DataReader ( linje 22 ) :
18 : Catch ex Som Exception
19 : Kasta
20 :
21 : Äntligen
23 : conn.Close ( ) katalog
24 : Slut Prova
6
bearbeta data , hämta det från Rad insamlingen av DataSet som följande : .
25 > För varje rad som DataRow I ds.Tables ( 0 ) rader
26 > fält1 = v ( " Field1 " ) katalog
27 > fält2 = raden ( " Fält2 " ) katalog
28 > ...
29 > ...
30 > Nästa