ΔΙΑΔΙΚΑΣΙΕΣ: Εφαρμογή μιας κλάσης βοηθητικού προγράμματος DataSet JOIN στο Visual C# .NET

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 326080 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

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

Περίληψη

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

Για να το κάνετε αυτό, χρησιμοποιήστε τις ακόλουθες μεθόδους δημόσιο:
  • CreateJoinTable
  • InsertJoinInto
  • SelectJoinInto
Για ναSelectJoinIntoκλήσεις μεθόδων τουCreateJoinTableκαι τοInsertJoinIntoμεθόδους. Μπορείτε επίσης να χρησιμοποιήσετε ένα ιδιωτικό βοηθητικά μέλη μέθοδο και τα δεδομένα για την αποθήκευση της λίστας πεδίων αναλυθεί.

Για ναDataSetHelperη κλάση περιλαμβάνει έναΤο DataSetμεταβλητή μέλους. Προαιρετικά, μπορείτε να αντιστοιχίσετε ένα υπάρχονΤο DataSetΓια να τοΤο DataSetμεταβλητή μέλους. Εάν η μεταβλητή μέλους παραπέμπει σε μια έγκυρηΤο DataSetANYΤο DataTableαντικείμενα που τοCreateJoinTableή στοSelectJoinIntoη μέθοδος δημιουργεί προστίθενται στοΤο DataSet. Και στις δύο περιπτώσεις, η κλήση της μεθόδου επιστρέφει μια αναφορά στοΤο DataTableObject. Για ναInsertJoinIntoη μέθοδος απαιτεί μια υπάρχουσα προορισμούΤο DataTableκαι δεν επιστρέφει τίποτε.

Για περισσότερες πληροφορίες σχετικά μεΤο DataSetαντικείμενα, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
313485ΠΛΗΡΟΦΟΡΙΕΣ: Οδηγίες για ADO.NET DataSet, το DataView και DataViewManager

ΑΠΑΙΤΗΣΕΙΣ

Η ακόλουθη λίστα περιγράφει το συνιστώμενο υλικό, λογισμικό, υποδομή δικτύου και τα service packs που απαιτούνται:
  • Τα Microsoft Windows XP, Windows 2000 ή Windows NT 4.0 Service Pack 6a
  • Microsoft Visual Studio .NET
Αυτό το άρθρο προϋποθέτει ότι είστε εξοικειωμένοι με τα ακόλουθα θέματα:
  • Η σύνταξη της Visual C# .NET
  • Βασικές αρχές ADO.NET και σύνταξη

Κλάση DataSetHelper κελύφους

Ο κώδικας σε αυτήν την ενότητα δηλώνει την κλάση κελύφους, στο οποίο όλα ταDataSetHelperάρθρα, προσθέστε τις μεθόδους και τις μεταβλητές μελών.
  1. Ξεκινήστε το Visual Studio .NET.
  2. Στο διακομιστήFILEμενού, σημείοΝέα, και στη συνέχεια κάντε κλικ στο κουμπίΤο έργο.
  3. ΣτοΝέο έργοπαράθυρο διαλόγου, κάντε κλικ στο κουμπίΤο Visual C# έργαunderΤύποι έργου, και στη συνέχεια κάντε κλικ στο κουμπίΒιβλιοθήκη κλάσηςunderΠρότυπα.
  4. ΣτοNAMEπληκτρολογήστεDataSetHelper.
  5. Αντικαταστήστε τον κωδικό κατηγορίας με τον ακόλουθο κώδικα:
    public class DataSetHelper
    {
        public DataSet ds;
    
        public DataSetHelper(ref DataSet DataSet)
        {
    	ds = DataSet;
        }
        public DataSetHelper()
        {
    	ds = null;
        }
    }
    					
    Μπορείτε να χρησιμοποιήσετε δύο υπερφορτώσεις για την κατασκευή για να δημιουργήσετε μια παρουσία της κλάσης με ή χωρίς αναφορά σε ένα έγκυροΤο DataSet. Για μια κλάση που περιέχει μια αναφορά σε ένα έγκυροΤο DataSetΓια ναΤο DataTableεπίσης προστίθενται αυτόματα σε αντικείμενα που επιστρέφουν τις μεθόδους τουΤο DataSet.

Πρόγραμμα ανάλυσης της λίστας πεδίων

Αυτή η ενότητα περιέχει τον κωδικό για μια μονάδα ανάλυσης λίστας πεδίου. Χρησιμοποιείται η δομή ανάλυσης, έτσι ώστε τοCreateJoinTableκαι τοInsertJoinIntoμέθοδοι δεν χρειάζεται να επανάληψης ανάλυσης της λίστας πεδίων. Οι μέθοδοι αυτές πρέπει να επανάληψης ανάλυσης της λίστας πεδίων εάν καλούνται από τοSelectJoinIntoη μέθοδος ή το δικό σας κώδικα. Η λίστα πεδίων αναλυθεί και τη λίστα πεδίων unparsed αποθηκεύονται στοΙδιωτικόμεταβλητές μελών από τοDataSetHelperCLASS.
  1. Προσθέστε τα εξήςΙδιωτικόκλάση ορισμό τουDataSetHelperκλάση που δημιουργήσατε εσείς το ""ενότητα:
    private class FieldInfo
    {
        public string RelationName;
        public string FieldName;	//source table field name
        public string FieldAlias;	//destination table field name
        public string Aggregate;
    }
    					
    ΣΗΜΕΙΩΣΗ: Αυτή η κλάση είναι κοινά για τουςDataSetHelperάρθρα και περιέχει ορισμένα πεδία που δεν χρησιμοποιεί αυτό το άρθρο.

  2. Προσθέστε τα εξήςΙδιωτικόμεταβλητές μέλους στον ορισμό κλάσης αμέσως μετά τοΤο DataSetδήλωση:
    private System.Collections.ArrayList m_FieldInfo; private string m_FieldList; 
    					
  3. Προσθέστε τα εξήςΙδιωτικόη μέθοδος για τον ορισμό κλάσης. Αυτή η μέθοδος είναι η ίδια με τη μέθοδο που χρησιμοποιείται σε άλληDataSetHelperάρθρα.
    private void ParseFieldList(string FieldList, bool AllowRelation)
    {
        /*
         * This code parses FieldList into FieldInfo objects  and then 
         * adds them to the m_FieldInfo private member
         * 
         * FieldList systax:  [relationname.]fieldname[ alias], ...
        */ 
        if (m_FieldList == FieldList) return;
        m_FieldInfo = new System.Collections.ArrayList();
        m_FieldList = FieldList;
        FieldInfo Field; string[] FieldParts;
        string[] Fields=FieldList.Split(',');
        int i;
        for (i=0; i<=Fields.Length-1; i++)
        {
            Field=new FieldInfo();
            //parse FieldAlias
            FieldParts = Fields[i].Trim().Split(' ');
            switch (FieldParts.Length)
            {
                case 1:
                    //to be set at the end of the loop
                    break;
                case 2:
                    Field.FieldAlias=FieldParts[1];
                    break;
                default:
                    throw new Exception("Too many spaces in field definition: '" + Fields[i] + "'.");	                        
            }
            //parse FieldName and RelationName
            FieldParts = FieldParts[0].Split('.');
            switch (FieldParts.Length)
            {
                case 1: 
                    Field.FieldName=FieldParts[0];
                    break;
                case 2:
                    if (AllowRelation==false)
                        throw new Exception("Relation specifiers not permitted in field list: '" + Fields[i] + "'.");
                    Field.RelationName = FieldParts[0].Trim();
                    Field.FieldName=FieldParts[1].Trim();
                    break;
                default:
                    throw new Exception("Invalid field definition: " + Fields[i] + "'.");
            }
            if (Field.FieldAlias==null) 
                Field.FieldAlias = Field.FieldName;
            m_FieldInfo.Add (Field);
        }
    }
    					

Η μέθοδος CreateJoinTable

Αυτή η ενότητα περιέχει τον κωδικό για τοCreateJoinTableΗ μέθοδος.

Ακολουθεί η συνθήκη κλήσης για τηνCreateJoinTableΗ μέθοδος:
dt = dsHelper.CreateJoinTable("TestTable", ds.Tables["Employees"],
    "FirstName FName,LastName LName,DepartmentEmployee.DepartmentName Department");
				
Δημιουργεί μια νέα κλήση αυτού του δείγματοςΤο DataTableμε έναTableNameTestTable και τα τρία πεδία (FName LName και τμήμα). Αυτά τα τρία πεδία έχουν τον ίδιο τύπο ως το όνομα και τα πεδία "Επώνυμο" του πίνακα "Υπάλληλοι" και το πεδίο DepartmentName στον γονικό πίνακα που είναι προσπελάσιμα μέσω του DepartmentEmployee δεδομένωνDataRelationObject.

Χρησιμοποιήστε την παρακάτω σύνταξη για να καθορίσετε τα πεδία στη λίστα πεδίων:
[relationname.]fieldname[ alias], ...
				
Λάβετε υπόψη σας τα παρακάτω στοιχεία για αυτήν τη σύνταξη:
  • Για ναColumnNameκαι τοDatatypeΟι ιδιότητες είναι το μόνο ιδιότητες που έχουν αντιγραφεί στον προορισμόΤο DataTable.
  • Τα υπολογιζόμενα αποτελέσματα αντιγράφεται για πεδία που περιέχουν μια έκφραση.
  • Μπορείτε να μετονομάσετε ένα πεδίο προορισμούΤο DataTableκαθορίζοντας ένα ψευδώνυμο.
  • Στη λίστα πεδίων μπορούν να περιέχουν ένα υποσύνολο των ονομάτων πεδίων που εμφανίζονται σε διαφορετική σειρά από τη σειρά της προέλευσηςΤο DataTable. Αν το πεδίο είναι κενό, μια είναι εξαίρεση.
  • Για ναDataRelationπρέπει να συσχετίσετε το πρωτεύοντες πίνακες. For example, if you want to create a table that combines fields of the Customers, the Employees, and the Orders tables, you must use the Orders table as the source table and then reference fields in the Customers and the Employees tables by means of relations.
To call theCreateJoinTablemethod, add the following method to theDataSetHelperclass that you created in the "" section:
public DataTable CreateJoinTable(string TableName, DataTable SourceTable, string FieldList)
{
    /*
     * Creates a table based on fields of another table and related parent tables
     * 
     * FieldList syntax: [relationname.]fieldname[ alias][,[relationname.]fieldname[ alias]]...
    */ 
    if (FieldList==null)
    {
        throw new ArgumentException("You must specify at least one field in the field list.");
        //return CreateTable(TableName, SourceTable);
    }
    else
    {
        DataTable dt = new DataTable(TableName);
        ParseFieldList(FieldList, true);
        foreach(FieldInfo Field in m_FieldInfo)
        {
            if(Field.RelationName==null)
            {
                DataColumn dc = SourceTable.Columns[Field.FieldName];
                dt.Columns.Add(dc.ColumnName, dc.DataType, dc.Expression);
            }
            else
            {
                DataColumn dc = SourceTable.ParentRelations[Field.RelationName].ParentTable.Columns[Field.FieldName];
                dt.Columns.Add(dc.ColumnName, dc.DataType, dc.Expression);
            }
        }
        if (ds!=null)
            ds.Tables.Add(dt);
        return dt;
    }
}
				

InsertJoinInto Method

This section contains code for theInsertJoinIntoΗ μέθοδος. Για ναInsertJoinIntomethod copies records that are sorted and filtered from the source table and related tables to the destination table. Κατά την κλήση τουParseFieldListproperty, you can parse lists that were previously parsed, if these lists are available. If the field list is blank, an exception is thrown.

The following is the calling convention for theInsertJoinIntoΗ μέθοδος:
dsHelper.InsertJoinInto(ds.Tables["TestTable"], ds.Tables["Employees"], 
    "FirstName FName,LastName LName,DepartmentEmployee.DepartmentName Department", 
    "EmployeeID<5", "BirthDate");
				
The call sample copies records from the EmployeesΤο DataTable(and the DepartmentName field of a relatedΤο DataTable) to the TestTableΤο DataTable, which is filtered on "EmployeeID<5" and="" is="" sorted="" by=""></5">

ΣΗΜΕΙΩΣΗ: The filter and the sort expressions apply only to the source table and not to any related tables.

To call theInsertJoinIntomethod, add the following method to theDataSetHelperclass that you created in the "" section:
public void InsertJoinInto(DataTable DestTable, DataTable SourceTable, 
    string FieldList, string RowFilter, string Sort)
{
    /*
    * Copies the selected rows and columns from SourceTable and inserts them into DestTable
    * FieldList has same format as CreatejoinTable
    */ 
    if (FieldList==null)
    {
        throw new ArgumentException("You must specify at least one field in the field list.");
        //InsertInto(DestTable, SourceTable, RowFilter, Sort);
    }
    else
    {
    ParseFieldList(FieldList, true);
    DataRow[] Rows = SourceTable.Select(RowFilter, Sort);
    foreach(DataRow SourceRow in Rows)
    {
            DataRow DestRow = DestTable.NewRow();
            foreach(FieldInfo Field in m_FieldInfo)
            {
                if(Field.RelationName==null)
                {
                    DestRow[Field.FieldName] = SourceRow[Field.FieldName];
                }
                else
                {
                    DataRow ParentRow = SourceRow.GetParentRow(Field.RelationName);
                    DestRow[Field.FieldName] = ParentRow[Field.FieldName];
                }
            }
            DestTable.Rows.Add(DestRow);
        }
    }
}
				

SelectJoinInto Method

This section contains the code for theSelectJoinIntoΗ μέθοδος. This method is a combination of theCreateJoinTableκαι τοInsertJoinIntoμεθόδους. Για ναSelectJoinIntoδημιουργεί μια νέα μέθοδοΤο DataTableβάσει των υπαρχόντωνΤο DataTableαντικείμενα και αντιγράφει εγγραφές που είναι ταξινομημένο και φιλτραρισμένο στη νέαΤο DataTable.

Ακολουθεί η συνθήκη κλήσης για τηνSelectJoinIntoΗ μέθοδος:
dt = dsHelper.SelectInto("TestTable", ds.Tables["Employees"], 
    "FirstName FName,LastName LName,DepartmentEmployee.DepartmentName Department", "EmployeeID<5", "BirthDate");
				
Αυτή η κλήση δείγμα δημιουργεί έναΤο DataTableμε το όνομα TestTable με τρία πεδία. Αυτά τα τρία πεδία είναι με βάση το όνομα και τα πεδία "Επώνυμο" από τον πίνακαΤο DataTableκαι το πεδίο DepartmentName από τοΤο DataTableπου γίνεται αναφορά μέσω του DepartmentEmployeeDataRelation. Στη συνέχεια αυτό το δείγμα αντιγράφει εγγραφές από τον πίνακαΤο DataTableΓια να το TestTableΤο DataTable, όπου έχει φιλτραριστεί στο πεδίο "ΚωδΥπαλλήλου""<5" and="" is="" sorted="" by=""></5">

ΣΗΜΕΙΩΣΗ: Το φίλτρο και η ταξινόμηση παραστάσεις ισχύουν μόνο για τον πίνακα προέλευσης και όχι σε σχετιζόμενους πίνακες.

Για να καλέσετε τοSelectJoinIntoη μέθοδος, προσθέστε την ακόλουθη μέθοδο για τοDataSetHelperκλάση που δημιουργήσατε εσείς το ""ενότητα:
public DataTable SelectJoinInto(string TableName, DataTable SourceTable, string FieldList, string RowFilter, string Sort)
{
    /*
     * Selects sorted, filtered values from one DataTable to another.
     * Allows you to specify relationname.fieldname in the FieldList to include fields from
     *  a parent table. The Sort and Filter only apply to the base table and not to related tables.
    */ 
    DataTable dt = CreateJoinTable(TableName, SourceTable, FieldList);
    InsertJoinInto(dt, SourceTable, FieldList, RowFilter, Sort);
    return dt;
}
				

Δοκιμή της εφαρμογής

  1. Αποθήκευση και στη συνέχεια να μεταγλωττίσετε τοDataSetHelperη κλάση που δημιουργήσατε στις προηγούμενες ενότητες.
  2. Ακολουθήστε τα παρακάτω βήματα για να δημιουργήσετε ένα νέο Visual C# εφαρμογής Windows:
    1. Ξεκινήστε το Visual Studio .NET.
    2. Στο διακομιστήFILEμενού, σημείοΝέα, και στη συνέχεια κάντε κλικ στο κουμπίΤο έργο.
    3. ΣτοΝέο έργοπαράθυρο διαλόγου, κάντε κλικ στο κουμπίΤο Visual C# έργαunderΤύποι έργου, και στη συνέχεια κάντε κλικ στο κουμπίΕφαρμογή των WindowsunderΠρότυπα.
  3. Στην Εξερεύνηση των λύσεων, κάντε δεξιό κλικ στη λύση και, στη συνέχεια, κάντε κλικ στο κουμπίΠροσθήκη υπάρχοντος έργου. Προσθέστε στο έργο DataSetHelper.
  4. Στο διακομιστήΤο έργομενού, κάντε κλικ στο κουμπίΠροσθήκη αναφοράς.
  5. ΣτοΠροσθήκη αναφοράςπαράθυρο διαλόγου, κάντε κλικ στοΈργακαρτέλα και στη συνέχεια να προσθέσετε μια αναφορά στο έργο DataSetHelper της εφαρμογής Windows φόρμας.
  6. Στη σχεδίαση φόρμας, σύρετε τρίαΚουμπίτα στοιχεία ελέγχου και έναΤο DataGridελέγχου από την εργαλειοθήκη στη φόρμα. Το όνομα των κουμπιώνbtnCreateJoin,btnInsertJoinIntoANDbtnSelectJoinInto. Διατηρήστε το προεπιλεγμένο όνομα για τοΤο DataGridστοιχείο ελέγχου (dataGrid1).
  7. Στον κώδικα της φόρμας, προσθέστε την ακόλουθηusingπρόταση στο επάνω μέρος του παραθύρου κώδικα:
    using System.Data;
    					
  8. Add the following variable declarations to the form definition:
    DataSet ds; DataSetHelper.DataSetHelper dsHelper;
    					
  9. Προσθέστε τον ακόλουθο κώδικα για τοForm_LoadΣυμβάν:
    ds = new DataSet();
    dsHelper = new DataSetHelper.DataSetHelper(ref ds);
    //Create source tables
    DataTable dt = new DataTable("Employees");
    dt.Columns.Add("EmployeeID",Type.GetType("System.Int32") );
    dt.Columns.Add("FirstName", Type.GetType("System.String"));
    dt.Columns.Add("LastName", Type.GetType("System.String"));
    dt.Columns.Add("BirthDate", Type.GetType("System.DateTime"));
    dt.Columns.Add("JobTitle", Type.GetType("System.String"));
    dt.Columns.Add("DepartmentID", Type.GetType("System.Int32"));
    dt.Rows.Add(new object[] {1, "Tommy", "Hill", new DateTime(1970, 12, 31),  "Manager", 42});
    dt.Rows.Add(new object[] {2, "Brooke", "Sheals", new DateTime(1977, 12, 31), "Manager", 23});
    dt.Rows.Add(new object[] {3, "Bill", "Blast", new DateTime(1982, 5, 6), "Sales Clerk", 42});
    dt.Rows.Add(new object[] {1, "Kevin", "Kline", new DateTime(1978, 5, 13), "Sales Clerk", 42});
    dt.Rows.Add(new object[] {1, "Martha", "Seward", new DateTime(1976, 7, 4), "Sales Clerk", 23});
    dt.Rows.Add(new object[] {1, "Dora", "Smith", new DateTime(1985, 10, 22), "Trainee", 42});
    dt.Rows.Add(new object[] {1, "Elvis", "Pressman", new DateTime(1972, 11, 5), "Manager", 15});
    dt.Rows.Add(new object[] {1, "Johnny", "Cache", new DateTime(1984, 1, 23), "Sales Clerk", 15});
    dt.Rows.Add(new object[] {1, "Jean", "Hill", new DateTime(1979, 4, 14), "Sales Clerk", 42});
    dt.Rows.Add(new object[] {1, "Anna", "Smith", new DateTime(1985, 6, 26), "Trainee", 15});
    ds.Tables.Add(dt);
    
    dt = new DataTable("Departments");
    dt.Columns.Add("DepartmentID", Type.GetType("System.Int32"));
    dt.Columns.Add("DepartmentName", Type.GetType("System.String"));
    dt.Rows.Add(new object[] {15, "Men's Clothing"});
    dt.Rows.Add(new object[] {23, "Women's Clothing"});
    dt.Rows.Add(new object[] {42, "Children's Clothing"});
    ds.Tables.Add(dt);
    
    ds.Relations.Add("DepartmentEmployee",     ds.Tables["Departments"].Columns["DepartmentID"], 
        ds.Tables["Employees"].Columns["DepartmentID"]);
    					
  10. Προσθέστε τον ακόλουθο κώδικα για τοbtnCreateJoin_ClickΣυμβάν:
    dsHelper.CreateJoinTable("EmpDept",ds.Tables["Employees"], 
        "FirstName FName,LastName LName,BirthDate,DepartmentEmployee.DepartmentName Department");
    dataGrid1.SetDataBinding(ds, "EmpDept");
    					
  11. Προσθέστε τον ακόλουθο κώδικα για τοbtnInsertJoinInto_ClickΣυμβάν:
    dsHelper.InsertJoinInto(ds.Tables["EmpDept"], ds.Tables["Employees"], 
        "FirstName FName,LastName LName,BirthDate,DepartmentEmployee.DepartmentName Department",
        "JobTitle='Sales Clerk'", "DepartmentID");
    dataGrid1.SetDataBinding(ds, "EmpDept");
    					
  12. Προσθέστε τον ακόλουθο κώδικα για τοbtnSelectJoinInto_ClickΣυμβάν:
    dsHelper.SelectJoinInto("EmpDept2", ds.Tables["Employees"],
        "FirstName,LastName,BirthDate BDate,DepartmentEmployee.DepartmentName Department", 
        "JobTitle='Manager'", "DepartmentID");
    dataGrid1.SetDataBinding(ds, "EmpDept2");
    					
  13. Run the application, and then click each of the buttons. Προσέξτε ότι τοΤο DataGridis populated with the tables and the data from the code.

    ΣΗΜΕΙΩΣΗ: You can only click thebtnCreateJoinκαι τοbtnSelectJoinIntobuttons one time. If you click either of these buttons more than one time, you receive an error message that you are trying to add the same table two times. Additionally, you must clickbtnCreateJoinbefore you clickbtnInsertJoinInto; otherwise, the destinationΤο DataTableis not created. Εάν κάνετε κλικ στοbtnInsertJoinIntobutton multiple times, you populate theΤο DataGridwith duplicate records.

Βελτίωση ιδεών

  • Για ναColumnNameκαι τοDatatypeΟι ιδιότητες είναι το μόνο ιδιότητες που έχουν αντιγραφεί στον προορισμόΤο DataTable. You can extend theCreateTablemethod to copy additional properties, such as theMaxLengthproperty, or you can create new key columns.
  • Για ναExpressionproperty is not copied; instead, the evaluated result is copied. Therefore, you do not have to add fields that are referenced by the expression to the destination table. Additionally, the destination column can appear earlier in the result list than any of the columns that this column depends on otherwise. Μπορείτε να τροποποιήσετε τοCreateTablemethod to copy theExpression(the InsertInto column ignores columns with anExpression), although this is subject to the limitations that are mentioned earlier in this paragraph.
  • You can merge the functionality of theCreateJoinTableΓια ναInsertJoinIntoκαι τοSelectJoinIntomethods into theCreateTableΓια ναInsertIntoκαι τοSelectIntoμεθόδους. Για πρόσθετες πληροφορίες σχετικά με τοCreateTableΓια ναInsertIntoκαι τοSelectIntomethods, click the article number below to view the article in the Microsoft Knowledge Base:
    326009HOWTO: Implement a DataSet SELECT INTO helper class in Visual C# .NET
    If you do not want to merge these methods, but if you have both sets of methods in a single class, you can enable theCreateJoinTableκαι τοInsertJoinIntomethods to handle an empty field list by removing theThrowstatements and by uncommenting the calls to theCreateTableκαι τοInsertIntomethods in the following lines of code:
        if (FieldList==null)
        {
            throw new ArgumentException("You must specify at least one field in the field list.");
            //return CreateTable(TableName, SourceTable);
        }
    					
    -και-
        if (FieldList==null)
        {
            throw new ArgumentException("You must specify at least one field in the field list.");
            //InsertInto(DestTable, SourceTable, RowFilter, Sort);
        }
    					

ΑΝΤΙΜΕΤΩΠΙΣΗ ΠΡΟΒΛΗΜΑΤΩΝ

  • The fieldname and the alias parts of the field list must comply withDataColumnnaming conventions. The parser also restricts the names, in that the name must not contain a period (.), a comma (,), or a space ( ).
  • If you click a button more than one time, the same table is added two times to theΤο DataSet, which results in an exception. To work around this problem, you can add code to the test application to check whether aΤο DataTableof the same name already exists. Alternatively, you can create theDataSetHelperclass without a reference to aΤο DataSetand then bind theDataGrid.DataSourceproperty directly to thedtvariable instead of by using theSetDataBindingmethod call.
  • If the source table uses custom data types (that is, a class), you must add code to theInsertJoinIntomethod to perform a deep copy of the data. Otherwise, only a reference is copied.

Ιδιότητες

Αναγν. άρθρου: 326080 - Τελευταία αναθεώρηση: Τρίτη, 21 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Λέξεις-κλειδιά: 
kbhowtomaster kbsystemdata kbmt KB326080 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:326080

Αποστολή σχολίων

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com