OLE DB .NET Framework 数据提供程序还使用 OleDbConnection 对象的 GetOleDbSchemaTable 方法来公开架构信息。GetOleDbSchemaTable 将 OleDbSchemaGuid(标识要返回的架构信息)和所返回列上的约束数组用作参数。GetOleDbSchemaTable 返回已填充所请求架构信息的 DataTable。
从数据库获取架构信息通过架构发现过程来完成。通过架构发现,应用程序可以请求托管提供程序查找并返回有关给定数据库的数据库架构(也称为元数据)名称的信息。不同的数据库架构元素(例如表、列和存储过程)通过架构集合进行公开。每个架构集合包含所使用的提供程序特定的各种架构信息。
使用OleDbConnection.GetOleDbSchemaTable 方法,应用了指定的限制之后,按照 GUID 的指示从数据源返回架构信息。
命名空间:System.Data.OleDb
/// <summary>
/// 返回Mdb数据库中所有表表名
/// </summary>
public string[] GetShemaTableName(string database_path, string database_password)
{
try
{
//获取数据表
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:DataBase Password='" + database_password + "Data Source=" + database_path;
conn.Open();
DataTable shemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
int n = shemaTable.Rows.Count;
string[] strTable = new string[n];
int m = shemaTable.Columns.IndexOf("TABLE_NAME");
for (int i = 0; i < n; i++)
{
DataRow m_DataRow = shemaTable.Rows
;
strTable = m_DataRow.ItemArray.GetValue(m).ToString();
}
return strTable;
}
catch (OleDbException ex)
{
MessageBox.Show("指定的限制集无效:\n" + ex.Message);
return null;
}
finally
{
conn.Close();
conn.Dispose();
}
}