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






3.06/5 (13投票s)
2002年8月10日
2分钟阅读

215041

2312
关于如何获取数据库表中列表的技巧
引言
这里有一个小技巧,可以让你获取数据库中的表列表。这种技术不仅限于枚举表,还可以用来获取关于数据库的许多其他信息。但对于本文,我们将讨论限制在获取表列表上。
还记得经典的 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。