0

これは簡単に聞こえるかもしれませんが、何度か試しましたが、必要なものを取得できませんでした。

タイプの入力を持つストアド プロシージャがありますDATETIME。ハードコードされた文字列などを提供することで、ストアドプロシージャが機能することを確認しましたN'2012-12-31 16:45:00'

ここで、C# から同じ入力値を使用して同じストアド プロシージャを実行したいと考えています。の値はどのように指定すればよいDatetimeですか?

制限の更新: パラメータ化された SQL は許可されていません

4

2 に答える 2

7

(パラメータ化されたSQLに対する制限が追加される前に書かれた回答。)

Datetime の値はどのように指定すればよいですか?

パラメータ化された SQL では、他の値と同様です。

using (SqlCommand command = new SqlCommand("StoredProcName", connection))
{
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.Add("@Foo", SqlDbType.DateTime).Value = 
        new DateTime(2012, 12, 31, 16, 45, 0);
    // Execute here
}

適切な文字列形式を見つけようとして混乱しないでください。できる限り文字列変換を避けてください。ハードコードされた文字列や数値をそのままの SQL ステートメントに含めて、それらが適切に明白である場合は、それほど嫌悪するわけではありませんが、日付/時刻の値にパラメーターを使用して、わずかな変換の問題を回避することは間違いありません。(そして、エスケープする必要がある可能性のある文字列にもパラメーターを使用します...)

于 2013-11-05T07:26:23.477 に答える
0

ストアド プロシージャにパラメーターとして日時を指定するだけです。

using (SqlConnection conn = new SqlConnection("ConnString"))
{
    conn.Open();
    SqlCommand cmd = new SqlCommand("Exec SP_Test @theDate",conn);
    cmd.Parameters.AddWithValue("theDate",new DateTime(2012,12,31,16,45,0));
    cmd.ExecuteNonQuery();
}

テスト中に、ハードコードされた値をストアド プロシージャの既定のパラメーターとして追加することもできます。

于 2013-11-05T07:29:34.503 に答える