更新が機能しません。.NETでの難易度の更新
sqlstr ="UPDATE emp SET bDate='"+Convert.ToDateTime(txtbDate.Text)+"'";
エンコードテーブルを更新できません。 Parseメソッドも使ってみました。 エラーメッセージを表示します。 charデータ型をdatetimeデータ型に変換すると、範囲外のdatetime値が発生しました。ステートメントは終了されました。
更新が機能しません。.NETでの難易度の更新
sqlstr ="UPDATE emp SET bDate='"+Convert.ToDateTime(txtbDate.Text)+"'";
エンコードテーブルを更新できません。 Parseメソッドも使ってみました。 エラーメッセージを表示します。 charデータ型をdatetimeデータ型に変換すると、範囲外のdatetime値が発生しました。ステートメントは終了されました。
ユーザからの入力を受け入れるときは、必ずsqlパラメータを使用する必要があります。これは恐らくあなたの問題を解決するだけでなく、セキュリティを向上させるでしょう。あなたはパラメータ化ストアドプロシージャを使用することができます)
私はパラメータ化に同意しますが、.AddWithValueを使用しないことをお勧めします実際に基礎となるデータ型を指定していないので、期待どおりに動作しない可能性があります。例えばhttp://chrisrickard.blogspot.com/2007/06/addwithvalue-is-evil.html – AdaTheDev
あなたはsqlstrに保管するので、それはプレーンな文字列でなければならない。これを試してみてください。
.net datetimeにはSQL DateTimeよりも多くの値が含まれているため、範囲外のエラーです。
パラメータ化されたストアドプロシージャは、SQLインジェクション攻撃に対するセキュリティを強化します。
;
sqlstr ="UPDATE emp SET [email protected]";
SqlCommand.Parameters.AddWithValue("@bDate", Convert.ToDateTime(txtbDate.Text));
あなたは一石2羽の鳥を殺すとパラメータを使用することができます。
UPDATE emp SET [email protected]
と変換を行うためにDateTime.Parse()を使用して、直接日付でパラメータ値を入力します。これにより、今あなたが持っているSQ1注入の問題も解消されます。
パラメータ化SQLを使用して、このようにアドホックSQLを使用しないでください:
sqlstr = "UPDATE emp SET [email protected] WHERE...."
その後、あなたのSqlCommandオブジェクトに、@NewDateパラメータを追加します。
YourSqlCommand.Parameters.Add("@NewDate", SqlDbType.DateTime);
YourSqlCommand.Parameters["@NewDate"].Value = Convert.ToDateTime(txtbDate.Text);
使用パラメータはに日付を渡しますクエリ ole dbを使用している場合:
sqlstr = "UPDATE emp SET bDate=? "
command.Parameters.Add(New OleDbParameter("@bDate", Convert.ToDateTime(txtbDate.Text)))
試してみましたか日付の値をSQL形式(yyyy-MM-dd)、2000年12月31日から
乾杯します。
すぐにパラメータ化クエリを使用してソリューションをテストします。 しかしConvert.ToDateTime(txtbDate.Text).ToString( "yyyy-MM-dd")は完全に機能します。 私は半日以上これを試しました。 ありがとうございましたdkartopr ありがとうございました – Dejene
"charデータ型をdatetimeデータ型に変換すると、範囲外のdatetime値が発生しました。この文は終了しました。"
日時がSQLのDateTimeで許容される範囲にありません。何時に解析しようとしていますか?私はいくつかの本当に早い時期(例えば1/15/103)にこのエラーを抱えています。日付は任意の開始点からティックで格納されます。 .NET用
開始点は、SQLのための開始点は、私が最終値についてはよく分からない1753年1月1日
ある1/1/0001
です。これらを実行して比較してみてください。コードトレース、またはコンソール書き込み線。
DateTime netDate = DateTime.MinValue;
SqlDateTime sqlDate = SqlDateTime。MinValue; DateTime netMaxDate = DateTime.MaxValue;
SqlDateTime sqlMaxDate = SqlDateTime.MaxValue;
他の人がクエリのパラメータ化について述べたことをお読みください。
なぜこれがダウン表示されましたか?これは彼の実際のエラーに直接対処します(日付の時間が範囲外であるため変換が失敗しました) –
ただ興味深いメモ。形式がYYYY-MM-DD HH:MM:SSの形式(たとえば2009-08-12 12:27:50)の場合、SQL Serverは地域の設定に関係なく常に正しく解析します。 –
パラメータがあなたの友人である理由を参照してください:http://stackoverflow.com/questions/1263125/how-does-sql-query-parameterisation-work/1263142#1263142 – Eric