Share via


DataTableReader.GetSchemaTable Metode

Definisi

Mengembalikan yang DataTable menjelaskan metadata kolom dari DataTableReader.

public:
 override System::Data::DataTable ^ GetSchemaTable();
public override System.Data.DataTable GetSchemaTable ();
override this.GetSchemaTable : unit -> System.Data.DataTable
Public Overrides Function GetSchemaTable () As DataTable

Mengembalikan

DataTable yang menjelaskan metadata kolom.

Pengecualian

Contoh

Contoh aplikasi konsol berikut mengambil informasi skema tentang kolom yang ditentukan. Teruskan DisplaySchemaTableInfo prosedur a DataTableReader dan bilangan bulat yang mewakili posisi ordinal kolom dalam DataTableReader, dan prosedur menghasilkan informasi skema ke jendela konsol.

private static void TestGetSchemaTable()
{
    // Set up the data adapter, using information from
    // the AdventureWorks sample database.
    // Modify the SQL expression to retrieve
    // data from a different table.
    SqlDataAdapter adapter =
        SetupDataAdapter("SELECT * FROM Sales.Customer");

    // Fill the DataTable, retrieving all the schema information.
    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
    DataTable table = new DataTable();
    adapter.Fill(table);

    // Create the DataTableReader, and close it when done.
    using (DataTableReader reader = new DataTableReader(table))
    {
        // Modify the column number to display information
        // about a column other than column 0.
        DisplaySchemaTableInfo(reader, 0);
    }

    Console.WriteLine();
    Console.WriteLine("Press Enter to finish.");
    Console.ReadLine();
}

private static void DisplaySchemaTableInfo(
        DataTableReader reader, int ordinal)
{
    // Given a DataTableReader, display schema
    // information about a particular column.
    try
    {
        DataTable schemaTable = reader.GetSchemaTable();
        DataRow row = schemaTable.Rows[ordinal];
        foreach (DataColumn col in schemaTable.Columns)
        {
            Console.WriteLine("{0}: {1}",
                col.ColumnName, row[col.Ordinal]);
        }
    }
    catch (IndexOutOfRangeException ex)
    {
        Console.WriteLine("{0} is an invalid column number.",
            ordinal);
    }
}

private static SqlDataAdapter SetupDataAdapter(String sqlString)
{
    // Assuming all the default settings, create a
    // SqlDataAdapter working with the AdventureWorks
    // sample database that's available with
    // SQL Server.
    String connectionString =
        "Data source=(local);initial catalog=AdventureWorks;" +
        "Integrated Security=True";
    return new SqlDataAdapter(sqlString, connectionString);
}
Private Sub TestGetSchemaTable()
   ' Set up the data adapter, using information from 
   ' the AdventureWorks sample database.
   ' Modify the SQL expression to retrieve 
   ' data from a different table.
   Dim adapter As SqlDataAdapter = _
      SetupDataAdapter("SELECT * FROM Sales.Customer")

   ' Fill the DataTable, retrieving all the schema information.
   adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
   Dim table As New DataTable
   adapter.Fill(table)

   ' Create the DataTableReader, and close it when done.
   Using reader As New DataTableReader(table)
      ' Modify the column number to display information
      ' about a column other than column 0.
      DisplaySchemaTableInfo(reader, 0)
   End Using

   Console.WriteLine()
   Console.WriteLine("Press Enter to finish.")
   Console.ReadLine()
End Sub

Private Sub DisplaySchemaTableInfo( _
   ByVal reader As DataTableReader, ByVal ordinal As Integer)

   ' Given a DataTableReader, display schema
   ' information about a particular column.
   Try
      Dim schemaTable As DataTable = reader.GetSchemaTable()
      Dim row As DataRow = schemaTable.Rows(ordinal)
      For Each col As DataColumn In schemaTable.Columns
         Console.WriteLine("{0}: {1}", _
            col.ColumnName, row(col.Ordinal))
      Next
   Catch ex As IndexOutOfRangeException
      Console.WriteLine("{0} is an invalid column number.", _
         ordinal)
   End Try
End Sub

Private Function SetupDataAdapter( _
   ByVal sqlString As String) As SqlDataAdapter
   ' Assuming all the default settings, create a SqlDataAdapter
   ' working with the AdventureWorks sample database that's 
   ' available with SQL Server.
   Dim connectionString As String = _
      "Data Source=(local);" & _
      "Initial Catalog=AdventureWorks;" & _
      "Integrated Security=true"
   Return New SqlDataAdapter(sqlString, connectionString)
End Function

Keterangan

Metode GetSchemaTable mengembalikan metadata tentang setiap kolom dalam urutan berikut:

Kolom DataReader Deskripsi
ColumnName Nama kolom seperti yang muncul di DataTable.
ColumnOrdinal Ordinal kolom
ColumnSize -1 jika ColumnSize properti (atau MaxLength) dari DataColumn tidak dapat ditentukan atau tidak relevan; jika tidak, 0 atau bilangan bulat positif yang berisi MaxLength nilai.
NumericPrecision Jika jenis kolom adalah jenis numerik, ini adalah presisi maksimum kolom. Jika jenis kolom bukan tipe data numerik, ini adalah nilai null.
Skala Numerik Jika jenis data kolom memiliki komponen skala, kembalikan jumlah digit di sebelah kanan titik desimal. Jika tidak, kembalikan nilai null.
DataType Jenis kolom yang mendasar.
ProviderType Indikator jenis data kolom. Jika jenis data kolom bervariasi dari baris ke baris, nilai ini adalah Object. Kolom ini tidak boleh berisi nilai null.
IsLong true jika jenis data kolom adalah String dan propertinya MaxLength adalah -1. Sebaliknya, false.
AllowDBNull true jika batasan AllowDbNull diatur ke true untuk kolom; jika tidak, false.
IsReadOnly true jika kolom tidak dapat dimodifikasi; jika tidak false.
IsRowVersion false, untuk setiap kolom.
IsUnique true: Tidak ada dua baris dalam DataTable dapat memiliki nilai yang sama di kolom ini. IsUnique dijamin benar jika kolom mewakili kunci dengan sendirinya atau jika ada batasan jenis UNIQUE yang hanya berlaku untuk kolom ini. false: Kolom dapat berisi nilai duplikat di DataTable. Default kolom ini adalah false.
IsKey true: Kolom adalah salah satu dari sekumpulan kolom yang, digabungkan, secara unik mengidentifikasi baris di DataTable. Kumpulan kolom dengan IsKey diatur ke true harus mengidentifikasi baris secara unik di DataTable. Tidak ada persyaratan bahwa kumpulan kolom ini adalah sekumpulan kolom minimal. Kumpulan kolom ini dapat dihasilkan dari DataTable kunci primer, batasan unik, atau indeks unik. false: Kolom tidak diperlukan untuk mengidentifikasi baris secara unik. Nilai ini adalah true jika kolom berpartisipasi dalam kunci primer tunggal atau komposit. Jika tidak, nilainya adalah false.
IsAutoIncrement true: Kolom menetapkan nilai ke baris baru dalam kenaikan tetap. false: Kolom tidak menetapkan nilai ke baris baru dalam kenaikan tetap. Default kolom ini adalah false.
BaseCatalogName Nama katalog di penyimpanan data yang berisi kolom . Null jika nama katalog dasar tidak dapat ditentukan. Nilai default untuk kolom ini adalah null nilai.
BaseSchemaName Nilai ini selalu Null.
BaseTableName Nama DataTable.
BaseColumnName Nama kolom di DataTable.
AutoIncrementSeed Nilai DataTableAutoIncrementSeed properti .
AutoIncrementStep Nilai DataTableAutoIncrementStep properti .
DefaultValue Nilai DataColumnDefaultValue properti .
Ekspresi String ekspresi, jika kolom saat ini adalah kolom ekspresi dan semua kolom yang digunakan dalam ekspresi milik yang sama T:System.Data.DataTable yang berisi kolom ekspresi; jika tidak null.
ColumnMapping Nilai MappingType yang DataColumnterkait dengan . Jenisnya bisa menjadi salah satu dari Attribute, Element, Hidden, atau SimpleContent. Nilai defaultnya adalah Element.
BaseTableNamespace Nilai DataTableNamespace properti .
BaseColumnNamespace Nilai DataColumnNamespace properti .

Berlaku untuk