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

SQLにパラメーターを渡すこととは何ですか?なぜそれが必要なのですか?

    パラメータをSQLに渡すことで、動的SQL文字列を作成する必要がなくなります。

    動的SQLステートメントの作成は、ユーザーが独自のSQLコードをアプリケーションに挿入し、データに対して望ましくないコマンドを実行する可能性があるため、大きなセキュリティリスクになります。

    SQLインジェクション攻撃の可能性のあるいくつかの良いサンプルがあります:

    例によるSQLインジェクション攻撃

    SQLステートメントにパラメーターを渡す方法は2つあります。 1つは、前述のようにストアドプロシージャを使用することです。もう1つは、パラメーター化されたクエリを使用することです(これは実際に私が好むものです)。

    パラメータ化されたクエリは、実際には.NETでは非常に簡単です:

    using(SqlConnection conn = new SqlConnection(connString))
    {
        SqlCommand command = 
            new SqlCommand("SELECT * FROM Users WHERE Username = @Username", conn);
    
        command.Parameters.Add(new SqlParameter("@Username", "Justin Niessner"));
    
        SqlDataAdapter adapter = new SqlDataAdapter(command);
        DataTable dt = new DataTable();
    
        adapter.Fill(dt);
    }
    

    この例では、パラメーターは@Usernameでした。 Parametersを使用しました SqlCommandのコレクション 値を渡すオブジェクト。



    1. DATEFROMPARTS()SQL Server(T-SQL)の例

    2. セッションでOracleで使用されている通貨記号を確認する

    3. PostgreSQL:テーブル作成時間

    4. 複数の列から最小値を選択するための最良の方法は何ですか?