C#のMySQLトラバースデータのすべての列内のすべてのテーブルには、ターゲットを見つけるために

INFORMATION_SCHEMA MySQLデータベースCOLUMNSテーブル内のすべてのテーブルのすべての列に格納されています。

MySql.Data.MySqlClientを使用しました。
システムを使用しました。
System.Collections.Genericを使用しました。
System.Linqのを使用しました。
System.Textのを使用しました。
System.Threading.Tasksを使用しました。

名前空間ConsoleApp1 
{ 
    クラスプログラム
    { 
        静的な無効メイン(文字列[] args)
        { 
            一覧<MyTableという>リスト= GetTableList(); 
            クエリー(リスト、 "1111aaaa"); 
            Console.WriteLineを( "オーバー"); 
            Console.ReadLine(); 
        } 

        静的リスト<たMyTable> GetTableList()
        { 
            使用(MySqlConnectionにCONN =のgetConnection()) 
            {
                辞書<文字列、MyTableという> DIC =新しい辞書<文字列、MyTableという>(); 
                たMySqlCommand CMD = conn.CreateCommand()。
                cmd.CommandText = "SELECT TABLE_NAME、COLUMN_NAME information_schema.columnsからTABLE_SCHEMA = 'lpet6plusdb';"; 
                使用(MySqlDataReaderリーダ= cmd.ExecuteReader())
                { 
                    一方(reader.Read())
                    { 
                        文字列テーブル= reader.GetString( "テーブル名"); 
                        ストリング列= reader.GetString( "COLUMN_NAME")。
                        (dic.ContainsKey(表))もし 
                        {
                            DIC [表] .ColumnList.Add(列); 
                        } 
                        { 
                            たMyTable T =新しいMyTableという()。
                            t.Table =表。
                            t.ColumnList.Add(列); 
                            dic.Add(t.Table、T)。
                        } 
                    } 
                } 
                dic.Values.ToList()を返します。
            } 
        } 

        静的ボイドクエリ(リスト<たMyTable>リスト、文字列str)
        { 
            使用(MySqlConnectionにCONN =のgetConnection())
            {
                たMySqlCommand CMD = conn.CreateCommand()。
                foreachの(リスト内のMyTableというテーブル)
                { 
                    foreachの(table.ColumnListの文字列カラム)
                    { 
                        {0}ここで、 '{1}'のように'%{2}%'からcmd.CommandText = String.Formatの( "SELECT COUNT(*) 」table.Table、カラム、STR)。
                        オブジェクトOBJ = cmd.ExecuteScalar()。
                        (Convert.ToInt32(OBJ)> 0)であれば
                        { 
                            Console.WriteLineを(String.Formatの( "テーブル名:{0}、ColumnNameの:{1}"、table.Table、カラム))。
                        } 
                    } 
                } 
            } 
        } 

        静的MySqlConnectionにのgetConnection()
        { 
            MySqlConnectionにCONN =新しいMySqlConnectionに( "サーバ=ローカルホスト、ポート= 3306;ユーザID =ユーザID、パスワード=通過;データベース= MYDB;プーリング= TRUE;のConnectionTimeout = 1800")。
            conn.Open(); 
            CONN返します。
        } 
    } 

    publicクラスMyTableという
    { 
        パブリック文字列表{得ます。セット; } 
        公共の一覧<文字列> columnlistの{取得します。セット; })(新しいリスト<string>を=。
    } 
}

  

おすすめ

転載: www.cnblogs.com/aitong/p/12022060.html