Αναγν. άρθρου: 314145 - Τελευταία αναθεώρηση: Δευτέρα, 20 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0

Τρόπος συμπλήρωση ενός αντικειμένου DataSet από μια βάση δεδομένων με χρήση της Visual C# .NET

Συμβουλή συστήματοςΑυτό το άρθρο ισχύει για διαφορετικό λειτουργικό σύστημα από αυτό που χρησιμοποιείτε. Το περιεχόμενο του άρθρου που ενδέχεται να μην σας αφορά έχει απενεργοποιηθεί.

Σε αυτήν τη σελίδα

Ανάπτυξη όλων | Σύμπτυξη όλων

Περίληψη

Το 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Ακολουθήστε τα εξής βήματα:
  1. Ξεκινήστε το Visual Studio .NET.
  2. Δημιουργήστε ένα νέο έργο εφαρμογής κονσόλας στο Visual C# .NET. Το Visual Studio .NET δημιουργεί μια στατική κλάση, μαζί με ένα κενόΚύριοςΔιαδικασία.
  3. Βεβαιωθείτε ότι το έργο αναφορές στοSYSTEMANDSystem.Dataπεδία ονομάτων.
  4. Χρήση τουusingδήλωση σχετικά με τοSYSTEM,System.DataANDSystem.Data.SqlClientχώροι ονομάτων, έτσι ώστε δεν χρειάζεται να εγκρίνετε δηλώσεις από αυτά τα πεδία ονομάτων αργότερα στον κώδικά σας. Πρέπει να χρησιμοποιήσετε αυτές τις προτάσεις πριν από τις άλλες δηλώσεις.
    using System;
    using System.Data;
    using System.Data.SqlClient;
    					
  5. Το πρώτο βήμα για τη λήψη δεδομένων από τη βάση δεδομένων τουΤο 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();
    					
  6. Δημιουργήστε ένα φάκελοDataAdapterαντικείμενο, το οποίο αντιπροσωπεύει τη σύνδεση μεταξύ της βάσης δεδομένων και σαςΤο DataSetObject. Μπορείτε να καθορίσετε SQL ή άλλο τύπο εντολής που χρησιμοποιείται για την ανάκτηση δεδομένων ως τμήμα του αντικειμένου της κατασκευής τουDataAdapter. Αυτό το δείγμα χρησιμοποιεί μια πρόταση SQL που ανακτά εγγραφές από τον πίνακα Authors, στη βάση δεδομένων Pubs.
    SqlDataAdapter daAuthors 
    	= new SqlDataAdapter("Select * From Authors", objConn);
    					
  7. Πρέπει να δηλώσετε και να δημιουργήσει μια παρουσία του ενόςΤο DataSetτο αντικείμενο, οπότε μπορείτε να δώσετε ένα όνομα για το σύνολοΤο DataSetπριν να αρχίσετε να φορτώσει όλα τα δεδομένα. Το όνομα μπορεί να περιέχει πολλούς πίνακες ξεχωριστά.
    DataSet dsPubs = new DataSet("Pubs");
    					
  8. Για να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");
    					
  9. Τα δεδομένα είναι τώρα διαθέσιμο ως ένα άτομοΤο DataTableαντικείμενο μέσα στοΠίνακεςσυλλογή από τοΤο DataSet. Εάν έχετε καθορίσει ένα όνομα πίνακα με τις κλήσεις σεFillSchemaANDΓέμισμα, μπορείτε να χρησιμοποιήσετε το ίδιο όνομα, για να αποκτήσετε πρόσβαση στον συγκεκριμένο πίνακα που θέλετε.
    DataTable tblAuthors;
    tblAuthors = dsPubs.Tables["Authors"];
    					
  10. Μπορείτε να χρησιμοποιήσετε μια For κάθε βρόχο στο βρόχο σε όλες τιςDataRowαντικείμενα εντός τουΓραμμέςσυλλογή από έναΤο DataTable. Αυτό σας δίνει πρόσβαση σε κάθε γραμμή του πίνακα. Μπορείτε να προσπελάσετε στήλες κατά όνομα ή κατά ευρετήριο θέσης (με '0' την πρώτη θέση της στήλης). Για παράδειγμα:
    foreach (DataRow drCurrent in tblAuthors.Rows)
    {
    	Console.WriteLine("{0} {1}",
    		drCurrent["au_fname"].ToString(),
    		drCurrent["au_lname"].ToString());
    }
    Console.ReadLine();
    					
  11. Για να αποθηκεύσετε το έργο σας. Στο διακομιστήΟ εντοπισμός σφαλμάτωνμενού, κάντε κλικ στο κουμπί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:
"Diving into Data Access" (anMSDN Voicescolumn by Dino Esposito)
http://msdn2.microsoft.com/en-us/library/ms810293.aspx (http://msdn2.microsoft.com/en-us/library/ms810293.aspx)

ADO.NET για το Εγχειρίδιο προγραμματιστή του ADO
http://msdn2.Microsoft.com/en-us/library/ms973217.aspx (http://msdn2.microsoft.com/en-us/library/ms973217.aspx)

MSDN Online Κέντρο για προγραμματιστές του .NET
http://msdn.microsoft.com/en-us/netframework/default.aspx (http://msdn.microsoft.com/en-us/netframework/default.aspx)

Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Λέξεις-κλειδιά: 
kbhowtomaster kbsqlclient kbsystemdata kbmt KB314145 KbMtel
Μηχανικά μεταφρασμένοΜηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:314145  (http://support.microsoft.com/kb/314145/en-us/ )