[英]How do I list the table names in a database?
我们有一个Oracle 8i数据库,我只有读取权限。 我们使用ODBC和MS Access从该数据库读取数据,因为我们没有Oracle客户端软件。 这很好用。 我在ASP.NET中使用ADO.NET。 现在我想显示我通过ODBC在MS Access中看到的所有表的列表。 我在C#中尝试使用ODBC连接。 我尝试了以下查询来获取表的列表,这些表不起作用。
这是我用来实现这个功能的功能,它实际上并不像我希望的那样。
public static ArrayList GetODBCTablesList()
{
try
{
OdbcConnection DbConnection = new OdbcConnection("DSN=mydsn;UID=user1;PWD=pwd1;");
DbConnection.Open();
OdbcCommand DbCommand = DbConnection.CreateCommand();
DbCommand.CommandText = "select table_name from all_tables";
OdbcDataReader DbReader = DbCommand.ExecuteReader();
if (DbReader != null)
{
ArrayList TableList = new ArrayList();
while (DbReader.Read())
{
TableList.Add(DbReader.GetString(0));
}
DbReader.Close();
DbCommand.Dispose();
DbConnection.Close();
TableList.Sort();
TableList.TrimToSize();
return TableList;
}
DbCommand.Dispose();
DbConnection.Close();
return null;
}
catch (Exception ex)
{
LogHandler.WriteLogMessage(ex.GetBaseException().ToString(), true);
return null;
}
}
这给了我一个表的列表,它不包含我在使用ODBC链接MS Access中的表时看到的所有表。
这有效:
select table_name from tabs;
由于您使用的是ADO.NET,我建议使用OdbcConnection.GetSchema 。 此方法返回一个DataTable
其中包含有关数据库架构的信息。
从这个答案 ,这可能对你有用:
OdbcConnection.GetSchema( “表”)
您可以尝试select table_name from user_tables
要么
select object_name from USER_objects where object_type='TABLE'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.