话不多说,上代码
public string showTables(string sourceType)
{
string sql = "";
switch (sourceType)
{
case "Sqlite":
sql = @"select name from sqlite_master where type='table' order by name";
break;
case "Hive":
sql = @"show tables";
break;
case "MySql":
sql = @"SELECT TABLE_NAME FROM information_schema.tables
where TABLE_SCHEMA = database()
order by TABLE_NAME asc";
break;
case "ClickHouse":
sql = @" select distinct name from system.tables where database != 'system'
order by name asc";
break;
case "PostgreSql":
sql = @"select tablename from pg_tables
where schemaname = current_user
order by tablename asc";
break;
case "SqlServer":
sql = @"select name from sysobjects where xtype='u'
order by name asc";
break;
case "Oracle": // 筛选掉临时表 where duration IS NULL
sql = @"SELECT b.table_name FROM USER_USERS a
LEFT JOIN all_tables b ON a.USERNAME = b.OWNER
ORDER BY table_name asc";
break;
default: //默认情况下认为是Mysql
sql = @"SELECT TABLE_NAME FROM information_schema.tables
where TABLE_SCHEMA = database()
order by TABLE_NAME asc";
break;
}
return sql;
总结
不同的数据库,对库的含义也不同,有的是区分用户 schema,有的是区分数据库,总之各家有各家不同的设定