[英]c# How can I filter the column names of a database table?
我已經使用INFORMATION_SCHEMA
來獲取數據庫的所有表和列。
DataTable dt_search_BaseTables = new DataTable();
MySqlDataAdapter mAdapter;
MySqlCommand myCommand = new MySqlCommand(@"SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME,
COLUMN_DEFAULT, COLUMN_TYPE, COLUMN_KEY FROM
INFORMATION_SCHEMA.COLUMNS", connection);
mAdapter = new MySqlDataAdapter(myCommand);
mAdapter.Fill(dt_search_BaseTables);
但是,如果我想選擇一個特定的table_name來僅獲取一個無效表的列:
DataRow[] dr = dt_search_BaseTables.Select("TABLE_NAME=" + stablename);
我得到了
錯誤:找不到列[stablename]。
我該如何解決這個問題?
問題很簡單:您需要在stablename
名稱內的傳遞的表名周圍添加單引號,然后由於Select
方法具有與RowFilter語法相同的表達式規則,因此將傳遞的值視為字符串文字賦值。
因此它應該是這樣的:
DataRow[] dr = dt_search_BaseTables.Select("TABLE_NAME = '" + stablename + "'");
或創建一個字符串變量,然后將其傳遞給Select
方法:
string expression = "TABLE_NAME = '" + stablename + "'";
DataRow[] dr = dt_search_BaseTables.Select(expression);
參考:
我建議您將WHERE條件添加到SELECT查詢中。 這將有助於過濾服務器端的大量不必要的表-
例如 -
SELECT
TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLUMN_DEFAULT, COLUMN_TYPE, COLUMN_KEY
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = '{0}' AND TABLE_NAME = '{1}';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.