2009-05-11 13 views
-1

Welche Methode ist effizienter zu verwenden: DataAdapter und DataSet oder DataReader beim Importieren von Daten aus einer bestimmten Datenbanktabelle ???Wie erstellt man Windows-Anwendungen in VB.Net oder ASP.Net

+1

Hinzugefügt Tags hilft so gut wie nichts mit Antwort – stevehipwell

+2

Fragetitel zu helfen, beschleunigen mit Frage selbst zu tun? –

+1

@nour kaakour serially ... Fragen Sie, wie Sie Windows-Anwendungen erstellen, ASP.net-Anwendungen erstellen oder eine ADO.NET-Performance-Frage ... –

Antwort

2

Ich würde nur wählen, welche Sie am besten gefällt, und entscheiden, zu optimieren, sobald Sie einen Engpass in der Verwendung des einen oder anderen finden. Wenn Sie gerade an der Stelle sind, eine neue App zu planen, ist es sinnvoller, mit OK-Leistung zu arbeiten, als sich zu verirren und den "besten" Ansatz zu wählen.

1

Im Hintergrund verwendet der DataAdapter den DataReader, um die Daten tatsächlich abzufragen und das Dataset/Dataset aufzufüllen. Am Ende des Tages spielt es keine Rolle, welchen Sie verwenden, aber ich würde den DataAdapter empfehlen, da er einfacher zu codieren ist und weniger fehleranfällig ist.

0

Ein DataReader ist "effizienter" als ein DataAdapter, hat aber Einschränkungen. Es ist wahrscheinlich das Beste für Ihr Problem, aber ohne weitere Details ist es schwer zu sagen.

Und wie John sagt, eine funktionierende Lösung zu bekommen, könnte Ihre erste Priorität sein.

1

Ein Datenlesegerät liest die Daten in einer progressiven Weise, so dass Sie mit einer Reihe gleichzeitig umgehen können. Es ist schnell und leicht, aber hauptsächlich nur vorwärts.

Ein Datenadapter und Dataset, verwenden Sie tatsächlich den DataReader, um die Daten zu erhalten und speichert das Ergebnis im Speicher füllt die Tabelle dauert länger, aber den Zugriff und die Aktualisierung danach ist viel schneller, bis Sie die Daten wieder auf die DB.

Verwenden Sie einen Datenreader, wenn Geschwindigkeit Ihre Sache ist, verwenden Sie andernfalls einen Datensatz, da es viel besser lesbar und überschaubar ist.

1

Anwendungsfall ist hier wichtig. Wie werden Sie die Daten verwenden, sobald sie in Ihre Anwendung gemarshallt sind?

Wenn Sie nur durchlaufen müssen, hat ein DataReader den geringsten Speicheraufwand für Ihre gelisteten Technologien.

DataAdapter bietet mehr Funktionen im Austausch für mehr Speicher und wird speziell den Overhead von DataTable einbeziehen. Dies ist im Austausch für eine bequemere API.

DataSet ist am schwersten (bevor Sie zu typisierten Datasets kommen), bietet aber die Möglichkeit, In-Memory-Beziehungen zwischen DataRows zu erhalten.

Es gibt eine Reihe von Funktionen im Vergleich zu Kosten in Bezug auf Speicher- und Programmierungseffizienz - Speicher ist in vielen Anwendungsfällen relativ billig, und Programmiererzeit und Wartbarkeit von Code können auf lange Sicht wichtiger sein.

0

Da es klingt wie Sie nach Programm-Effizienz suchen. Ich würde mich zu einer Business-Objekt-Klasse neigen, die einen Datenleser als Zugriffsmethode verwendet. Das würde Ihnen die Möglichkeit geben, wartbaren Code zu erstellen und Ihnen Geschwindigkeit zu geben.

Sie könnten ein Objekt mit einer Methode erstellen, die wie im folgenden Beispiel durch einen DataReader iteriert. Dies gibt Ihnen die Geschwindigkeit und meiner Meinung nach ist es recht wartungsfreundlich. Dies ist wahrscheinlich genau das, was ein Typ-DataSet Ihnen bietet, nur ohne mehr Codezeilen, um die Funktionalität, die für das Abrufen von Daten benötigt wird, zu verallgemeinern.

etwas wie folgt aus:

public class Table1 
{ 
    public int Col1 { get; set; } 
    public String Col2 { get; set; } 

    public List<Table1> GetTable1() 
    { 
     List<Table1> tableContents = new List<Table1>(); 
     SqlCommand cmd = new SqlCommand("SELECT * FROM Table1"); 
     SqlDataReader rdr = cmd.ExecuteReader(); 
     while (rdr.Read()) 
     { 
      tableContents.Add(new Table1 
      { 
       Col1 = (int)rdr["Col1"], 
       Col2 = (string)rdr["Col2"] 
      }); 
     } 

     return tableContents; 
    } 
} 

Es gibt viele Möglichkeiten, es zu tun, hoffen, dass diese

+0

In diesem Beispiel wird C# verwendet. Dachte, ich würde das für zukünftige Referenz darauf hinweisen, wenn neuere Programmierer diese Frage sehen und verwirrt werden. – Cameron

Verwandte Themen