sql >> データベース >  >> RDS >> Mysql

TableNameとしてのMySqlParameter

    テーブル名をパラメータとして渡すことはできません。これを行うには動的SQLを使用する必要があるため、たとえば

    のように集中力を文字列化する必要があります。
      MySqlCommand cmd = new MySqlCommand(String.Format("select * from {0}",tableName), cn)
    

    ただし、ユーザーがtableNameを入力するため、SQLインジェクションが可能です。このSQLを使用して、テーブルから何かをクエリする前に、そのテーブルが存在するかどうかを判断できます。

    SELECT table_name
    FROM information_schema.tables
    WHERE table_schema = 'databasename'
    AND table_name = 'tablename';
    

    (このクエリを完全にパラメータ化できるため、SQLインジェクションが排除されます)

    一般的に、SQLインジェクションに注意してください。ただし、この内部を使用する場合(ユーザーに公開しない場合)、SQLインジェクションは問題になりません。

    さらに良いことに、私の別の答えのように、これを処理するためのストアドプロシージャを構築できます:

    LINQを使用した統合SQLゲッター




    1. MySQLでデータベースのサイズを確認する方法

    2. MySQLパフォーマンスベンチマーク:MySQL5.7とMySQL8.0

    3. PostgreSQLのMAX()関数

    4. tag1とtag2の投稿を検索しますか? (結合テーブルを使用)存在する/持つ/サブクエリ...何を使用しますか?