2016-11-30 26 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