0

次のようなイタリア語形式の日時文字列があります。

23/03/2012

この更新の sql コマンドは、datetime 部分が次のとおりです。

DateTime.ParseExact(Reg_tes.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture)

これは私のSqlサーバー(イタリア語)で機能しますが、サーバー(英語)でこれを作成すると、次のエラーが発生します:

「varchar データ型を datetime データ型に変換すると、範囲外の値になりました」

どうすればこれを解決できますか?

4

1 に答える 1

1

このような SQL インジェクションやローカリゼーションの問題を防ぐために、常にパラメーター化されたクエリを使用する必要があります。

したがって、この日時を文字列としてデータベースに渡していると仮定します。

using(var con = new SqlConnection("connection-string"))
using(var cmd = new SqlCommand("UPDATE dbo.TableName SET DateColumn=@DateColumn WHERE PK=@PK", con))
{
    DateTime reg_tes = DateTime.ParseExact(Reg_tes.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture);
    cmd.Parameters.AddWithvalue("@DateColumn", reg_tes);
    // other parameters ...
    con.Open();
    int affected = cmd.executeNonQuery();
}
于 2013-10-30T11:29:35.830 に答える