ADO.NET: DataSet-oder DataTable-und gewusst wie: abrufen von Daten
ALSO Gemeinschaft
Ich bin erste Schritte mit ADO.NET und bin ziemlich neu in der Programmierung. Ich habe einige bereits Unterstützung aus dieser Gemeinde, die sehr nützlich gewesen und hatte noch eine Frage.
In einfachen Worten, ich bin erstellen einer einfachen windows-Formular mit einer combobox, in der Namen von Mitarbeitern und eine-Taste, so dass, wenn der Benutzer auf die Schaltfläche klickt, der ausgewählte Mitarbeiter wird die E-Mail-Adresse wird in eine textbox auf der form.
In meinem Projekt habe ich die Datenbank und beim laden der form habe ich eine Verbindung zu meiner Datenbank, und erstellen Sie eine Datentabelle, wie unten gezeigt:
Public Class GetEmployeeDataset
Private tbl As New DataTable
Public Sub New()
Dim strConn, strSQL As String
strConn = "Data Source=.\SQLExpress;Initial Catalog=MyDatabase;Integrated Security=True;"
strSQL = "SELECT * FROM EmployeeTable"
Dim da As New SqlDataAdapter(strSQL, strConn)
da.Fill(tbl)
End Sub
End Class
In diesem Punkt habe ich zwei Fragen:
- Ich bin mit DataTable, im Gegensatz zu einem Datensatz, da, wie ich es verstehe, ein DataSet ist eine Sammlung von Datentabellen und ich habe nur eine einfache DataTable hier (5 Spalten, 100 Zeilen), so dass es scheint einfacher, nur um eine DataTable. Nichts falsch mit, dass?
- Jetzt, dass ich eine DataTable ('tbl' in meinem Beispiel) wie kann ich die Abfrage, die DataTable abrufen, die richtigen Daten, d.h. Email-Adresse basierend auf der name des Mitarbeiters? In SQL wäre es "SELECT EmailAddress, WO EmployeeName = SelectedItem". Ich habe mir mithilfe der Select-Methode der DataTable-aber ohne Erfolg, und dann ging ich nach unten, die RowFilter-Methode der DataView-aber ohne Erfolg.
Kann jemand mich in die richtige Richtung bitte?
Alex
InformationsquelleAutor | 2009-05-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nicht DataSets oder DataTables an alle. Der einzige Grund, den ich gefunden habe, Sie zu verwenden ist, wenn Sie wollen, halten Sie alle Daten, offline," änderungen an den Daten, dann diese änderungen zurück an die Datenbank benötigt werden.
Wenn alles, was Sie tun, ist das grabben der Daten vom server basierend auf Benutzer-Interaktion, es kann overkill für eine DataTable.
Edit: Oh, und zur Beantwortung Ihrer eigentlichen Fragen:
InformationsquelleAutor Michael Todd
Aufenthalt mit den ADO-Objekten, so könnten Sie die DataView...
InformationsquelleAutor Bill
Als ein DataSet speichert mehrere DataTables und verwaltet die Beziehungen und Ansichten unter Ihnen, Sie sind in Ordnung mit a ::shudder:: DataTable hier.
Sollten Sie überlegen, was genau hier Los ist. Wenn Sie sagen, "SELECT * FROM employeetable-Tabelle", die Sie gehen, um genau das zu tun -, dass alle Daten aus der Datenbank, und versuchen Sie DANN zu filtern, die außerhalb der Datenbank in der Anwendung code. Dies ist nicht eine gute Idee für eine Reihe von Gründen, aber für jetzt, lasst uns einfach sagen, dass wir das lassen sollten-Datenbanken führen Sie eine job-Sie sind wirklich gut und dass ist das filtern und Sortieren von Daten.
Finden Sie wahrscheinlich Linq to SQL eine viel, viel einfacher, die Technologie zu implementieren, anstatt leiden durch ADO.NET. Es gibt zahlreiche tutorials auf das Thema so hier ist einer, um Ihnen den Einstieg (obwohl es älter ist). Linq to SQL wird im wesentlichen ermöglichen es Ihnen, Ihre set-basierte SQL-Kenntnissen nach vorne auf die Anwendungsdomäne, UND geben Ihnen gute Leistung zu Booten (also starten können Sie mit "SELECT * FROM Mitarbeiter" und Filter hinzuzufügen, auf die es nacheinander wie "WHERE Name = 'Smith'", die letztendlich führen auf die Datenbank).
Wenn Sie absolut, positiv müssen verwenden ADO.NET und haben Sie zu diesem Ansatz, die Sie tun können:
InformationsquelleAutor cfeduke
Einer Aufzählung wird der trick:
oder Sie können versuchen, LINQ:
Ich bin nicht der überprüfung der code in VS so "Tippfehler vorbehalten".
Sorry für C# - version, aber ich weiß nicht, VB.
InformationsquelleAutor User
Mit 100 Datensätze (oder 1.000.000 wenn indiziert der name des Mitarbeiters) Ihre beste option für diesen speziellen Fall ist das abrufen der E-Mail-Adresse, die Sie benötigen, verwenden Sie die ExecuteScalar-Methode des SqlCommand-Objekts. Ziehen Sie die gesamte Tabelle über den Draht nur um ein einzelnes Feld ist fast immer eine schlechte Idee. Wählen Sie * auch mit einer where-Klausel ist in der Regel eine schlechte Idee, auch für Leistung und Wartung Gründe.
Dem folgenden code erhalten Sie die Email-Adresse für einen Mitarbeiter-Namen.
Wie schon andere gesagt haben, DataTables sind für die offline-Speicherung in der relativ seltenen Gelegenheiten, wenn Sie es brauchen. Und du hast Recht, es gibt keinen Grund, verwenden Sie ein DataSet, es sei denn, Sie benötigen, um offline-cache eine ganze Datenbank (oder eine Teilmenge einer Datenbank).
InformationsquelleAutor John M Gant