Befüllen und Lesen von DataSets mit DataReader
Zu Abschnitt 5.4.3 des Buchs
Das folgende Beispielprogramm zeigt die Verwendung von DataReader in Zusammenhang mit
DataSets. In der Methode LoadData wird ein DataReader verwendet,
um ein DataSet zu befüllen (Methode Load ).
In der Methode Print wird ein DataTableReader verwendet, um die Daten aus dem DataSet auszulesen.
5-4-3-DataTableReaderSample.cs
using System;
using System.Data;
using System.Data.SqlClient;
namespace Chapter5
{
public class DataTableReaderSample
{
public static void Main()
{
//----- Daten und Schema laden
DataSet ds = LoadData();
//----- Daten ausgeben
Print(ds);
//----- Daten als XML Datei speichern
ds.WriteXml("data.xml");
}
static DataSet LoadData()
{
IDbConnection con = null;
try
{
//----- Verbindung aufbauen
con = new SqlConnection("data source=(local)\\SQLEXPRESS; " +
" database=NETBOOK; Integrated Security= True;");
//----- Select-Kommando erzeugen
IDbCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT * FROM Person; SELECT * FROM Contact";
//----- Verbindung oeffnen
con.Open();
//----- Reader erzeugen
IDataReader reader = cmd.ExecuteReader();
//----- DataSet erzeugen und mit Reader befuellen
DataSet ds = new DataSet("PersonContacts");
//ds.Tables.Add(new DataTable("Person"));
//ds.Tables.Add(new DataTable("Contact"));
ds.Load(reader, LoadOption.OverwriteChanges, "Person", "Contact");
// Aenderungen uebernehmen oder verwerfen
if (ds.HasErrors) ds.RejectChanges(); else ds.AcceptChanges();
return ds;
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
return null;
}
finally
{
if (con != null) con.Close();
}
}
static void Print(DataSet ds)
{
DataTableReader r = ds.CreateDataReader();
int i = 1;
do
{
Console.WriteLine(" ---- Table " + i + "----------------");
while (r.Read())
{
object[] vals = new object[r.FieldCount];
r.GetValues(vals);
foreach (object v in vals)
{
Console.Write(v.ToString() + " - ");
}
Console.WriteLine();
}
i++;
} while (r.NextResult());
}
}
}
|
Beim Ausführen des Programms wird folgende Ausgabe erzeugt:
|