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

SQLステートメントで文字列変数を使用する方法

    あなたはこれを行うことができます

    query = "Select * From Table Where Title = " + someone;
      

    しかし、それは悪いことであり、SQL インジェクションにつながる

    パラメータ化されたクエリを使用する必要があります

    このようなものから始める必要があります

    using (var cn = new SqlClient.SqlConnection(yourConnectionString))
    using (var cmd = new SqlClient.SqlCommand())
    {
       cn.Open();
       cmd.Connection = cn;
       cmd.CommandType = CommandType.Text;
       cmd.CommandText = "Select * From Table Where Title = @Title";
       cmd.Parameters.Add("@Title", someone);
    }
      

    彼は私のものよりも完全だったので、Jon Skeetの答えから

    SqlCommand.Parameters 詳細については、

    基本的に、さまざまな理由から、SQL 自体に値を埋め込むべきではありません:

    • コードとデータを混在させるのはエレガントではありません
    • 回避に十分注意しないと、SQL インジェクション攻撃にさらされることになります
    • 数値、日付、時刻などのフォーマットや国際化の詳細について心配する必要があります
    • 値が変更されただけでクエリが同じままである場合、オプティマイザーが行う作業は少なくなります。SQL に関して完全に一致するため、以前に最適化されたクエリを直接検索できます。


    1. MySQLは今月のみですか?

    2. SQLLIMITとJDBCステートメントのsetMaxRows。どちらの方がよいですか?

    3. M1 Mac(ARM64)にSQLServerをインストールする方法

    4. 列の値からドットとコンマを削除する