使用OleDbConnection.GetOleDbSchemaTable方法可以獲取待檢索數據源的架構信息,常使用方法如下:
DataTable Schemadt = OleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new[] { null, null, null, "table" });
查看Schemadt內數據方法
for (int i = 0; i < Schemadt.Rows.Count; i++)
{
Console.WriteLine("SheetName=" + Schemadt.Rows[i]["TABLE_NAME"].ToString());
}
注意:SqlClient.SqlConnection 對象沒有與GetOleDbSchemaTable 等價的方法。
下面解釋一下GetOleDbSchemaTable 這個方法
OLE DB .NET 數據提供程序使用 OleDbConnection 對象的 GetOleDbSchemaTable 方法展示架構信息。GetOleDbSchemaTable 返回填充了架構信息的 DataTable。
GetOleDbSchemaTable 的第一個參數是架構參數,它是一個 OleDbSchemaGuid 類型的標識,指定了要返回的架構信息的類型(如表、列和主鍵)。第二個參數是一個限制對象數組,對 DataTable 架構中返回的行進行過濾(例如,您可以指定對表的名稱、類型、所有者和/或架構的限制)。
OleDbSchemaGuid 成員
OleDbSchemaGuid 參數指定 GetOleDbSchemaTable 方法要返回的架構表的類型。
OleDbSchemaGuid 成員主要包括:
限制
限制是一個過濾值對象數組,每個元素對應於結果 DataTable 中的一個 DataColumn。OleDbSchemaGuid 參數決定了相應的限制。例如,在指定表的 OleDbSchemaGuid 時,限制數組如下所示:
{TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE} 在傳遞限制數組的值時,對於不包含值的數組元素使用 Visual C# .NET 的 null 關鍵字。例如,如果要檢索表的架構,使用OleDbSchemaGuid.Tables。但是,如果指定了表,也將返回別名、同義詞、視圖和其他相關對象。因此,如果您希望過濾掉除表以外的所有其他對象,請對 TABLE_TYPE 使用 TABLE 限制。可以對 TABLE_CATALOG、TABLE_SCHEMA 和 TABLE_NAME 使用 null,因為您不過濾這些對象:schemaTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
new Object[] {null, null, null, "TABLE"});
返回的數據表
每個符合 OleDbSchemaGuid 類型和限制規則的對象都對應於 GetOleDbSchemaTable 方法返回的 DataTable 中的一行。每個限制列對應於DataTable 的一列,後面是基於 OleDbSchemaGuid 字段的其他架構信息。
例如,當您使用以下代碼時,返回的 DataTable 的