65.9K
CodeProject 正在变化。 阅读更多。
Home

如何获取数据库中的表列表

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.06/5 (13投票s)

2002年8月10日

2分钟阅读

viewsIcon

215041

downloadIcon

2312

关于如何获取数据库表中列表的技巧

Sample Image - DatabaseTables.jpg

引言

这里有一个小技巧,可以让你获取数据库中的表列表。这种技术不仅限于枚举表,还可以用来获取关于数据库的许多其他信息。但对于本文,我们将讨论限制在获取表列表上。

还记得经典的 ADO Connection.OpenSchema 方法,它用于获取表。这个功能并没有消失。它存在于 OleDb 数据提供程序的连接对象 OleDbConnection 中。你可以使用 GetOleDbSchemaTable 方法来获取 DataTable,其中包含数据库中每个表对应的行。此方法的第一个参数是 OleDbSchemaGuid 值。该值表示要返回的模式类型。要获取表列表,将使用 OleDbSchemaGuid.Tables 值。GetOleDbSchemaTable 方法的第二个参数是一个数组,表示在返回值时将应用的限制。

OleDbSchemaGuid.Tables 值将返回数据库中的所有表和视图。为该 Guid 值返回的信息有 4 个限制列,你可以使用它们来限制从数据库返回的数据量。以下是限制列的列表。

  • TABLE_CATALOG
  • TABLE_SCHEMA
  • TABLE_NAME
  • TABLE_TYPE

如果你只想获取表列表,而不是视图、系统表等,那么为第四列提供值为 TABLE 的限制。以下是我们在附件项目中使用的示例代码。

private DataTable GetDatabaseTables_SQL()
{
    string strConn = "Provider=SQLOLEDB;Data Source=localhost;
        Initial Catalog=Northwind;User ID=sa;Password=;";
    OleDbConnection conn = null;
    try
    {
        conn = new OleDbConnection(strConn);
        conn.Open();
        DataTable schemaTable = conn.GetOleDbSchemaTable(
            OleDbSchemaGuid.Tables,
            new object[] {null, null, null, "TABLE"});
        return schemaTable;
    }
    catch (OleDbException ex)
    {
        Trace.Write(ex.Message);
        Response.Write(ex.Message);
    }
    finally
    {
        conn.Close();
    }
    return null;
}                        
                        

我们已经使用 SQL 以及 Oracle 数据库测试了此功能。对于 SQL 数据库,我们使用了 .NET 框架附带的 OleDb 提供程序。对于 Oracle,我们使用了 Oracle 9i 数据库附带的 OLE DB 提供程序。有关如何使用 Oracle9i OLE DB 提供程序的更多信息,请参阅 在 ASP.Net 应用程序中使用 Oracle9i

如何在数据库中获取表列表 - CodeProject - 代码之家
© . All rights reserved.