ID Artikel: 309681 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0

Bagaimana untuk mengambil informasi skema dengan menggunakan GetOleDbSchemaTable dan Visual C#.NET

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

Pada Halaman ini

Perbesar semua | Perkecil semua

RINGKASAN

Artikel ini menunjukkan bagaimana untuk menggunakan GetOleDbSchemaTable metode OleDbConnection objek ADO.NET untuk mengambil informasi database skema. Skema informasi di sumber data mencakup database atau katalog yang tersedia dari sumber data, tabel, dan pandangan dalam database, serta kendala yang ada dan seterusnya. Skema informasi di meja termasuk kunci primer, kolom, dan bidang autonumber.

Perhatikan bahwa tidak ada metode setara dengan GetOleDbSchemaTable Ketika Anda menggunakan SqlClient.SqlConnection objek. SQL Server.NET Data Provider memaparkan backend skema informasi melalui disimpan prosedur dan pandangan informasi. Untuk lebih informasi tentang pandangan dan disimpan prosedur yang tersedia melalui Microsoft SQL Server, lihat Transact-SQL referensi di MSDN Perpustakaan.

Persyaratan

Daftar berikut menguraikan fitur perangkat keras, perangkat lunak, jaringan infrastruktur, dan paket layanan yang Anda butuhkan:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server, atau Windows NT 4.0 Server
  • Microsoft Visual Studio.NET
Artikel ini mengasumsikan bahwa Anda sudah familiar dengan berikut topik:
  • Visual Studio.NET
  • ADO.Dasar-dasar bersih dan sintaks

GetOleDbSchemaTable metode dari objek OleDbConnection

OLE DB.Menggunakan penyedia Data NET GetOleDbSchemaTable metode OleDbConnection objek untuk mengekspos informasi skema. GetOleDbSchemaTable kembali DataTable yang diisi dengan informasi skema.

The argumen pertama dari GetOleDbSchemaTable adalah parameter skema, OleDbSchemaGuid argumen yang mengidentifikasi skema yang informasi untuk kembali (seperti tabel, kolom dan kunci utama). Argumen kedua adalah sebuah objek array pembatasan untuk menyaring baris yang dikembalikan dalam skema DataTable (sebagai contoh, Anda dapat menetapkan pembatasan untuk tabel nama, jenis, pemilik, dan/atau skema).

OleDbSchemaGuid anggota

The OleDbSchemaGuid argumen menentukan jenis skema meja untuk GetOleDbSchemaTable metode. Beberapa OleDbSchemaGuid anggota meliputi:
  • Kolom
  • Kunci asing
  • Indeks
  • Primary Key
  • Tabel
  • Dilihat
Untuk daftar lengkap OleDbSchemaGuid anggota, merujuk kepada "OleDbSchemaGuid anggota" situs Web Referensi bagian.

Pembatasan

Pembatasan ini objek serangkaian penyaring nilai, masing-masing sesuai dengan DataColumn dalam hasil DataTable. The OleDbSchemaGuid argumen menentukan pembatasan relevan. Sebagai contoh, ketika Anda tentukan OleDbSchemaGuid tabel, array pembatasan adalah sebagai berikut:
TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME {TABLE_TYPE}
Untuk meninjau pembatasan tersedia, klik salah OleDbSchemaGuid anggota pada Website Microsoft berikut:
OleDbSchemaGuid anggota
http://MSDN.Microsoft.com/Library/default.asp?URL=/Library/en-US/cpref/HTML/frlrfsystemdataoledboledbschemaguidmemberstopic.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoledboledbschemaguidmemberstopic.asp)
Ketika Anda melewati nilai dalam array pembatasan, termasuk Visual C#.NET null kata kunci untuk elemen array yang berisi nilai-nilai. Untuk contoh, jika Anda ingin mengambil meja skema, menggunakan OleDbSchemaGuid.Tables. Namun, jika Anda menetapkan tabel, ini juga mengembalikan alias, sinonim, pandangan, dan lain terkait objek. Dengan demikian, jika Anda ingin untuk menyaring semua objek kecuali tabel, gunakan pembatasan meja untuk TABLE_TYPE. Anda dapat menggunakan null untuk TABLE_CATALOG, TABLE_SCHEMA, dan TABLE_NAME karena Anda tidak menyaring pada objek-objek ini:
schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, 
              new Object[] {null, null, null, "TABLE"});
				

DataTable kembali

The DataTable yang GetOleDbSchemaTable metode mengembalikan memiliki satu baris untuk setiap objek yang memenuhi OleDbSchemaGuid jenis dan pembatasan kriteria. The DataTable memiliki kolom untuk masing-masing kolom pembatasan, yang diikuti oleh skema tambahan informasi berdasarkan OleDbSchemaGuid lapangan.

Sebagai contoh, ketika Anda menggunakan kode berikut, setiap baris dalam kembali DataTable adalah tabel database:
schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, 
              new Object[] {null, null, null, "TABLE"});
				
Kolom yang dikembalikan di DataTable adalah pembatasan kolom (TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE), yang diikuti oleh kolom tambahan skema TABLE_GUID, deskripsi, TABLE_PROPID, DATE_CREATED, dan DATE_MODIFIED.

Untuk memperoleh daftar nama kolom (yaitu bidang penjelas, seperti TABLE_CATALOG, TABLE_SCHEMA, dan TABLE_NAME), Anda dapat menggunakan posisi urutan kolom. Perhatikan bahwa Kolom array nol berbasis:
for (int i = 0; i < schemaTable.Columns.Count; i++) {
   Console.WriteLine(schemaTable.Columns[i].ToString());
}
				
Untuk mendapatkan nilai-nilai di setiap kolom (, nama sebenarnya tabel, seperti kategori, pelanggan dan karyawan), Anda dapat menggunakan posisi urutan dalam ItemArray baris. Perhatikan bahwa ItemArray nol berbasis:
for (int i = 0; i < schemaTable.Rows.Count; i++) {
   Console.WriteLine(schemaTable.Rows[i].ItemArray[2].ToString());
}
				

Membuat sampel yang daftar tabel dalam Database

Contoh berikut daftar tabel SQL Server Northwind database.

OleDbSchemaGuid.Tables kembali meja tersebut (termasuk dilihat) yang dapat diakses oleh tertentu masuk. Jika Anda menentukan sebuah array Object {null, null, null, "Meja"}, Anda menyaring untuk menyertakan hanya TABLE_TYPE tabel. Anda kemudian daftar nama tabel (TABLE_NAME) setiap baris dalam tabel kembali skema.
  1. Mulai Visual Studio.NET.
  2. Membuat proyek baru Visual C# Console Application. Class1.cs ditambahkan ke proyek secara default.
  3. Buka jendela kode untuk Class1. Paste kode berikut ke atas jendela kode di atas namespace Deklarasi:
    using System.Data;
    using System.Data.OleDb;
    					
  4. Dalam jendela kode, paste kode berikut ke Utama fungsi:
    OleDbConnection cn = new OleDbConnection();
    DataTable schemaTable;
    
    //Connect to the Northwind database in SQL Server.
    //Be sure to use an account that has permission to list tables.
    cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=<username>;
                           Password=<strong password>;Initial Catalog=Northwind";
    cn.Open();
    
    //Retrieve schema information about tables.
    //Because tables include tables, views, and other objects,
    //restrict to just TABLE in the Object array of restrictions.
    schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, 
                  new Object[] {null, null, null, "TABLE"});
    
    //List the table name from each row in the schema table.
    for (int i = 0; i < schemaTable.Rows.Count; i++) {
       Console.WriteLine(schemaTable.Rows[i].ItemArray[2].ToString());
    }
    
    //Explicitly close - don't wait on garbage collection.
    cn.Close();
    
    //Pause
    Console.ReadLine();
    					
  5. Memodifikasi ConnectionString untuk menghubungkan ke SQL Server komputer dengan account yang memiliki izin untuk daftar tabel pada Northwind database.
  6. Tekan tombol F5 untuk mengkompilasi dan menjalankan proyek. Pemberitahuan bahwa tabel tercantum dalam jendela konsol.
  7. Tekan ENTER untuk mengakhiri aplikasi konsol dan kembali ke Lingkungan pengembangan terpadu (IDE).

Membuat sampel yang mengambil skema untuk tabel

Contoh berikut daftar skema informasi untuk karyawan tabel dalam database SQL Server Northwind.

OleDbSchemaGuid.Tables kembali meja tersebut (termasuk dilihat) yang dapat diakses oleh tertentu masuk. Jika Anda menentukan sebuah array Object {null, null, "Karyawan", "Meja"}, Anda menyaring untuk menyertakan hanya sebuah tabel yang bernama karyawan. Anda kemudian daftar skema informasi untuk meja kembali skema.
  1. Membuat proyek baru Visual C# Console Application. Class1.cs ditambahkan ke proyek secara default.
  2. Buka jendela kode untuk Class1. Paste kode berikut ke atas jendela kode di atas namespace Deklarasi:
    using System.Data;
    using System.Data.OleDb;
    					
  3. Dalam jendela kode, paste kode berikut ke Utama fungsi:
    OleDbConnection cn = new OleDbConnection();
    DataTable schemaTable;
    
    //Connect to the Northwind database in SQL Server.
    //Be sure to use an account that has permission to retrieve table schema.
    cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=<username>;
                          Password=<strong password>;Initial Catalog=Northwind";
    cn.Open();
    
    //Retrieve schema information about the Employees table.
    schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, 
                  new Object[] {null, null, "Employees", "TABLE"});
    
    //List the schema info for the Employees table
    //in the format Field Descriptor : Field Value.
    for(int i = 0; i < schemaTable.Columns.Count; i++) {
       Console.WriteLine(schemaTable.Columns[i].ToString() + " : " + 
                         schemaTable.Rows[0][i].ToString());
    }
    
    //Explicitly close - don't wait on garbage collection.
    cn.Close();
    
    //Pause
    Console.ReadLine();
    					
  4. Memodifikasi ConnectionString untuk menghubungkan ke SQL Server komputer dengan account yang memiliki izin untuk mengambil skema tabel karyawan.
  5. Tekan F5 untuk mengkompilasi dan menjalankan proyek. Perhatikan bahwa Tabel tercantum dalam jendela konsol.
  6. Tekan ENTER untuk mengakhiri aplikasi konsol dan kembali ke IDE.

Membuat sampel yang berisi daftar kolom dalam tabel

Contoh berikut daftar nama-nama kolom dalam karyawan tabel dalam database SQL Server Northwind.

OleDbSchemaGuid.Columns kembali kolom dalam tabel dan pandangan yang dapat diakses oleh tertentu masuk. Jika Anda menentukan sebuah array Object {null, null, "Karyawan", null}, Anda menyaring untuk menyertakan hanya kolom untuk tabel karyawan.
  1. Membuat proyek baru Visual C# Console Application. Class1.cs ditambahkan ke proyek secara default.
  2. Buka jendela kode untuk Class1. Paste kode berikut ke atas jendela kode di atas namespace Deklarasi:
    using System.Data;
    using System.Data.OleDb;
    					
  3. Dalam jendela kode, paste kode berikut ke Utama fungsi:
    OleDbConnection cn = new OleDbConnection();
    DataTable schemaTable;
    
    //Connect to the Northwind database in SQL Server.
    //Be sure to use an account that has permission to list the columns in the Employees table.
    cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=<username>;
                           Password=<strong password>;Initial Catalog=Northwind";
    cn.Open();
    
    //Retrieve schema information about columns.
    //Restrict to just the Employees TABLE.
    schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, 
                  new Object[] {null, null, "Employees", null});
    
    //List the column name from each row in the schema table.
    for (int i = 0; i < schemaTable.Rows.Count; i++) {
       Console.WriteLine(schemaTable.Rows[i].ItemArray[3].ToString());
    }
    
    //Explicitly close - don't wait on garbage collection.
    cn.Close();
    
    //Pause
    Console.ReadLine();
    					
  4. Memodifikasi ConnectionString untuk menghubungkan ke SQL Server komputer dengan account yang memiliki izin untuk daftar kolom dalam tabel karyawan.
  5. Tekan F5 untuk mengkompilasi dan menjalankan proyek. Perhatikan bahwa kolom dari tabel karyawan tercantum dalam jendela konsol.
  6. Tekan ENTER untuk mengakhiri aplikasi konsol dan kembali ke IDE.

Membuat sampel yang berisi daftar kunci utama dalam tabel

Contoh berikut daftar tombol utama karyawan tabel dalam database SQL Server Northwind dan tabel karyawan di SQL Server database Pub.

OleDbSchemaGuid.Primary_Keys kembali orang-orang kunci utama dalam katalog yang dapat diakses oleh tertentu masuk. Dalam contoh ini, OleDbConnection adalah untuk SQL Server, tetapi tidak untuk database SQL Server tertentu:
cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=<username>;
                       Password=<strong password>;"
				
Sebaliknya, kode ini menentukan Northwind atau pub database sebagai TABLE_CATALOG dalam array pembatasan. Kode ini menentukan pemilik tabel, "dbo", untuk TABLE_SCHEMA pembatasan. Selain itu, kode ini menentukan nama tabel untuk TABLE_NAME pembatasan.

Untuk mendapatkan kunci utama Karyawan tabel dalam Northwind database, Anda menggunakan sebuah array Object {"Northwind", "dbo", "Karyawan"}:
schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, 
              new Object[] {"Northwind", "dbo", "Employees"});
				
Untuk mendapatkan kunci utama karyawan tabel dalam database Pub, Anda menggunakan sebuah array Object {"pub", "dbo", "Karyawan"}:
schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, 
              new Object[] {"Pubs", "dbo", "Employee"});
				
Untuk membuat sampel, ikuti langkah berikut:
  1. Membuat proyek baru Visual C# Console Application. Class1.cs ditambahkan ke proyek secara default.
  2. Buka jendela kode untuk Class1. Paste kode berikut ke atas jendela kode di atas namespace Deklarasi:
    using System.Data;
    using System.Data.OleDb;
    					
  3. Dalam jendela kode, paste kode berikut ke Utama fungsi:
    OleDbConnection cn = new OleDbConnection();
    DataTable schemaTable;
    
    //Connect to SQL Server.
    //Be sure to use an account that has permissions to list primary keys
    //in both the Northwind and Pubs databases.
    cn.ConnectionString = "Provider=SQLOLEDB;Data Source=server;User ID=<username>;
                           Password=<strong password>;";
    cn.Open();
    
    //Retrieve schema information about primary keys.
    //Restrict to just the Employees TABLE in the Northwind CATALOG.
    schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, 
                  new Object[] {"Northwind", "dbo", "Employees"});
    
    //List the primary key for the first row in the schema table.
    //The first three items in the ItemArray in the row are catalog, schema, and table.
    //The fourth item is the primary key.
    Console.WriteLine(schemaTable.Rows[0].ItemArray[3].ToString());
    
    //Retrieve primary key for the Employee TABLE in the Pubs CATALOG.
    schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, 
                  new Object[] {"Pubs", "dbo", "Employee"});
    
    //List the primary key for the first row in the schema table.
    Console.WriteLine(schemaTable.Rows[0].ItemArray[3].ToString());
    
    //Explicitly close - don't wait on garbage collection.
    cn.Close();
    
    //Pause
    Console.ReadLine();
    					
  4. Memodifikasi ConnectionString untuk menghubungkan ke SQL Server komputer dengan account yang memiliki izin yang memadai untuk daftar tombol utama.
  5. Tekan F5 untuk mengkompilasi dan menjalankan proyek. Perhatikan bahwa kunci primer dari karyawan tabel dalam Northwind database dan Karyawan tabel dalam database Pub terdaftar di konsol jendela.
  6. Tekan ENTER untuk mengakhiri aplikasi konsol dan kembali ke IDE.

REFERENSI

Untuk daftar lengkap OleDbSchemaGuid anggota, lihat topik berikut di Microsoft.NET Kerangka Software Development Kit (SDK) dokumentasi. Untuk daftar tersedia pembatasan, klik salah OleDbSchemaGuid anggota:
OleDbSchemaGuid anggota
http://MSDN.Microsoft.com/en-us/library/System.data.oledb.oledbschemaguid_members.aspx (http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbschemaguid_members.aspx)
Untuk informasi lebih lanjut, lihat topik berikut di.NET Kerangka SDK dokumentasi:
Memperoleh informasi Schema dari Database
http://MSDN.Microsoft.com/en-us/library/kcax58fh.aspx (http://msdn.microsoft.com/en-us/library/kcax58fh.aspx)

OleDbConnection.GetOleDbSchemaTable metode
http://MSDN.Microsoft.com/en-us/library/System.data.oledb.oledbconnection.getoledbschematable.aspx (http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbconnection.getoledbschematable.aspx)

OleDbSchemaGuid.Tables lapangan
http://MSDN.Microsoft.com/en-us/library/System.data.oledb.oledbschemaguid.Tables.aspx (http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbschemaguid.tables.aspx)

OleDbSchemaGuid.Columns lapangan
http://MSDN.Microsoft.com/en-us/library/System.data.oledb.oledbschemaguid.Columns.aspx (http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbschemaguid.columns.aspx)

OleDbSchemaGuid.Primary_Keys lapangan
http://MSDN.Microsoft.com/en-us/library/System.data.oledb.oledbschemaguid.primary_keys.aspx (http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbschemaguid.primary_keys.aspx)

Berlaku bagi:
  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Kata kunci: 
kbhowtomaster kbsystemdata kbmt KB309681 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:309681  (http://support.microsoft.com/kb/309681/en-us/ )