2016-11-30 171 views
1

我一直在研究一个应用程序,该应用程序列出了来自sql数据库的所有表以允许进行一些编辑。 但并非所有的表格都应该可见。 任何人都可以告诉如何筛选我的查询,以便它只显示所需的表?Combobox上显示的筛选器表beoing

的代码,我现在是:

con.Open(); 
using (SqlCommand com = new SqlCommand("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES", con)) 
{ 
    using (SqlDataReader reader = com.ExecuteReader()) 
    { 
     tabelas.Items.Clear(); 
     while (reader.Read()) 
     { 
      tabelas.Items.Add((string)reader["TABLE_NAME"]); 
     } 
    } 
} 

我想应该是这样的

SELECT TABLES I WANT TO SHOW FROM INFORMATION_SCHEMA.TABLES 

但在reader我应该怎么插?

由于提前,

+0

这是错误的,查询是错误的 – Sami

+0

个“想要的桌子......”那些桌子是那些? –

+0

'执行sp_tables其中table_name喜欢'%desired%'' –

回答

0

在Oracle中,这是我怎么会拿到启动withj道ANALYSIS为例

SELECT OBJECT_NAME 
FROM ALL_OBJECTS 
WHERE OBJECT_TYPE = 'TABLE' 
AND OBJECT_NAME LIKE 'ANALYSIS%'; 

在SQL Server中,你可以按照所有表的列表相同的构造

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG LIKE'test%' 

或者使用IN CLAUSE

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_NAME IN ('t1','t2','t3') 
+0

我尝试了几种你所建议的组合,但仍然没有工作。 想象有4个表格,但只想显示其中2个称为表格和笔记本电脑的表格,我如何过滤以便只显示这两个表格? 我以前的表名是错的。 – septaug

+0

@MethodMan将提供所有数据库的表名称。 – Sami

+0

我明白了,谢谢你的提示。我使用:SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME IN('t1','t2','t3') – septaug

0

嗯,你可以创建“理想”的表名的列表,然后只检查是否“读者[” TABLE_NAME“]”在你确定表的列表,或者使用SQL“IN”语句。

+0

LIKE STATEMENT对于使用Sql通配符会更好......但OP注释/ sql语句中的示例看起来是正确的,实际上如果表名包含单词'test 'th只有一个LIKE子句将需要不是3 – MethodMan