Το DataSetτα αντικείμενα, ένα σημαντικό τμήμα της πρόσβασης δεδομένων στο Microsoft .NET Framework, είναι αντικείμενα στη μνήμη που μπορεί να περιέχει πίνακες, προβολές και τις σχέσεις. Αυτό το άρθρο επιδεικνύει τον τρόπο συμπλήρωσης ενός
Το DataSetαντικείμενο με τα αποτελέσματα της ένα ή περισσότερα ερωτήματα βάσεων δεδομένων και τον τρόπο πρόσβασης σε αυτά τα δεδομένα μετά τη φόρτωσή του στο στο
Το DataSetObject.
ΑΠΑΙΤΗΣΕΙΣ
Η ακόλουθη λίστα περιγράφει τα υλικού που συνιστώνται, λογισμικό, υποδομή δικτύου και τα service pack που χρειάζεστε:
- Τα Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server ή Windows NT 4.0 Server
- Microsoft SQL Server 7.0, Microsoft SQL Server 2000 ή Microsoft Data Engine με τη βάση δεδομένων Pubs δείγμα εγκατεστημένο
- Microsoft Visual Studio .NET
Αυτό το άρθρο προϋποθέτει ότι είστε εξοικειωμένοι με τα ακόλουθα θέματα:
- Ορολογία βάσης δεδομένων
- Δομημένη Query Language (SQL)
Συμπλήρωση ενός DataSet
Χρησιμοποιώντας μια ποικιλία αντικειμένων μέσα από το
System.Dataπεδίο ονόματος, μπορείτε να συνδεθείτε με ένα διακομιστή βάσης δεδομένων, εκτελέστε ένα ερώτημα, και έχετε τοποθετήσει τα αποτελέσματα σε ένα
Το DataSetObject. Για να
Το DataSetείναι ένα αντικείμενο έχει αποσυνδεθεί. Επομένως, όταν γίνεται φόρτωση των δεδομένων, η σύνδεση με τη βάση δεδομένων δεν χρησιμοποιείται πλέον μέχρι που θέλετε να φορτώσετε περισσότερα δεδομένα ή να ενημερώσετε το διακομιστή με τις αλλαγές που κάνατε στο αντίγραφο των πληροφοριών στη μνήμη.
Φόρτωση δεδομένων από μια βάση δεδομένων σε μια
Το DataSetΑκολουθήστε τα εξής βήματα:
- Ξεκινήστε το Visual Studio .NET.
- Δημιουργήστε ένα νέο έργο εφαρμογής κονσόλας στο Visual C# .NET. Το Visual Studio .NET δημιουργεί μια στατική κλάση, μαζί με ένα κενόΚύριοςΔιαδικασία.
- Βεβαιωθείτε ότι το έργο αναφορές στοSYSTEMANDSystem.Dataπεδία ονομάτων.
- Χρήση τουusingδήλωση σχετικά με τοSYSTEM,System.DataANDSystem.Data.SqlClientχώροι ονομάτων, έτσι ώστε δεν χρειάζεται να εγκρίνετε δηλώσεις από αυτά τα πεδία ονομάτων αργότερα στον κώδικά σας. Πρέπει να χρησιμοποιήσετε αυτές τις προτάσεις πριν από τις άλλες δηλώσεις.
using System;
using System.Data;
using System.Data.SqlClient;
- Το πρώτο βήμα για τη λήψη δεδομένων από τη βάση δεδομένων τουΤο DataSetείναι η δημιουργία μιας σύνδεσης βάσης δεδομένων, η οποία απαιτεί έναSystem.Data.SqlClient.SqlCommandτο αντικείμενο και σε μια συμβολοσειρά σύνδεσης. Η συμβολοσειρά σύνδεσης σε κώδικα, ακολουθήστε συνδέεται σε ένα διακομιστή SQL Server που βρίσκεται στον τοπικό υπολογιστή (ο υπολογιστής όπου εκτελείται ο κώδικας). Πρέπει να τροποποιήσετε αυτήν τη συμβολοσειρά σύνδεσης ανάλογα με το περιβάλλον σας. Αφού το αρχείοSqlConnectionΔημιουργία αντικειμένου, καλέστε τοOpenη μέθοδος αυτού του αντικειμένου για να δημιουργήσετε τη σύνδεση πραγματική βάση δεδομένων.
string sConnectionString;
sConnectionString = "Password=myPassword;User ID=myUserID;"
+ "Initial Catalog=pubs;"
+ "Data Source=(local)";
SqlConnection objConn
= new SqlConnection(sConnectionString);
objConn.Open();
- Δημιουργήστε ένα φάκελοDataAdapterαντικείμενο, το οποίο αντιπροσωπεύει τη σύνδεση μεταξύ της βάσης δεδομένων και σαςΤο DataSetObject. Μπορείτε να καθορίσετε SQL ή άλλο τύπο εντολής που χρησιμοποιείται για την ανάκτηση δεδομένων ως τμήμα του αντικειμένου της κατασκευής τουDataAdapter. Αυτό το δείγμα χρησιμοποιεί μια πρόταση SQL που ανακτά εγγραφές από τον πίνακα Authors, στη βάση δεδομένων Pubs.
SqlDataAdapter daAuthors
= new SqlDataAdapter("Select * From Authors", objConn);
- Πρέπει να δηλώσετε και να δημιουργήσει μια παρουσία του ενόςΤο DataSetτο αντικείμενο, οπότε μπορείτε να δώσετε ένα όνομα για το σύνολοΤο DataSetπριν να αρχίσετε να φορτώσει όλα τα δεδομένα. Το όνομα μπορεί να περιέχει πολλούς πίνακες ξεχωριστά.
DataSet dsPubs = new DataSet("Pubs");
- Για ναSqlDataAdapterη κλάση παρέχει δύο μεθόδους,ΓέμισμαANDFillSchema, που είναι κρίσιμες για τη φόρτωση αυτών των δεδομένων. Και οι δύο αυτές μέθοδοι φόρτωση πληροφοριών σε έναΤο DataSet.Γέμισμαφορτώνει τα δεδομένα, καιFillSchemaφορτώνει όλα τα διαθέσιμα μετα-δεδομένων σχετικά με ένα συγκεκριμένο πίνακα (όπως τα ονόματα των στηλών, τα πρωτεύοντα κλειδιά και περιορισμούς). Είναι ένας καλός τρόπος για να χειριστείτε τα δεδομένα κατά τη φόρτωση για εκτέλεσηFillSchemaκαι στη συνέχεια το μήνυμαΓέμισμα. Για παράδειγμα:
daAuthors.FillSchema(dsPubs,SchemaType.Source, "Authors");
daAuthors.Fill(dsPubs,"Authors");
Εάν χρησιμοποιείτε μόνοΓέμισμα, μπορείτε να φορτώσετε μόνο τα βασικά μετα-δεδομένα που απαιτούνται για να περιγράψει τη στήλη τα ονόματα και τους τύπους δεδομένων. Για ναΓέμισμαη μέθοδος δεν φορτώνει πληροφορίες πρωτεύοντος κλειδιού. Για να αλλάξετε αυτήν την προεπιλεγμένη συμπεριφορά, μπορείτε να ορίσετε τοMissingSchemaActionη ιδιότητα από τοDataAdapterαντικείμενοMissingSchemaAction.AddWithKey, που φορτώνει μετα-δεδομένα πρωτεύοντος κλειδιού μαζί με τις προεπιλεγμένες πληροφορίες. Για παράδειγμα:
daAuthors.MissingSchemaAction = MissingSchemaAction.AddWithKey;
daAuthors.Fill(dsPubs,"Authors");
- Τα δεδομένα είναι τώρα διαθέσιμο ως ένα άτομοΤο DataTableαντικείμενο μέσα στοΠίνακεςσυλλογή από τοΤο DataSet. Εάν έχετε καθορίσει ένα όνομα πίνακα με τις κλήσεις σεFillSchemaANDΓέμισμα, μπορείτε να χρησιμοποιήσετε το ίδιο όνομα, για να αποκτήσετε πρόσβαση στον συγκεκριμένο πίνακα που θέλετε.
DataTable tblAuthors;
tblAuthors = dsPubs.Tables["Authors"];
- Μπορείτε να χρησιμοποιήσετε μια For κάθε βρόχο στο βρόχο σε όλες τιςDataRowαντικείμενα εντός τουΓραμμέςσυλλογή από έναΤο DataTable. Αυτό σας δίνει πρόσβαση σε κάθε γραμμή του πίνακα. Μπορείτε να προσπελάσετε στήλες κατά όνομα ή κατά ευρετήριο θέσης (με '0' την πρώτη θέση της στήλης). Για παράδειγμα:
foreach (DataRow drCurrent in tblAuthors.Rows)
{
Console.WriteLine("{0} {1}",
drCurrent["au_fname"].ToString(),
drCurrent["au_lname"].ToString());
}
Console.ReadLine();
- Για να αποθηκεύσετε το έργο σας. Στο διακομιστήΟ εντοπισμός σφαλμάτωνμενού, κάντε κλικ στο κουμπίStartto run your project and make sure that it works.
Ολοκλήρωση της λίστας κωδικών
using System;
using System.Data;
using System.Data.SqlClient;
namespace PopulateDataSet
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
static void Main(string[] args)
{
string sConnectionString;
sConnectionString = "Password=myPassword;User ID=myUserID;"
+ "Initial Catalog=pubs;"
+ "Data Source=(local)";
SqlConnection objConn
= new SqlConnection(sConnectionString);
objConn.Open();
SqlDataAdapter daAuthors
= new SqlDataAdapter("Select * From Authors", objConn);
DataSet dsPubs = new DataSet("Pubs");
daAuthors.FillSchema(dsPubs,SchemaType.Source, "Authors");
daAuthors.Fill(dsPubs,"Authors");
DataTable tblAuthors;
tblAuthors = dsPubs.Tables["Authors"];
foreach (DataRow drCurrent in tblAuthors.Rows)
{
Console.WriteLine("{0} {1}",
drCurrent["au_fname"].ToString(),
drCurrent["au_lname"].ToString());
}
Console.ReadLine();
}
}
}
For more information about ADO.NET,
Το DataSetobjects, and SQL, refer to the following Microsoft Web sites: