0

VB2005 と SQL SERVER 2000 を使用しています。

PVAR_SQL_STR = "INSERT INTO GLR_US_PERIOD (ORG5_CODE,PERIOD_YEAR,PERIOD_CODE," _
    "PERIOD_NO,FROM_DATE,TO_DATE,INSERT_USER,INSERT_DATE) VALUES " _
    & "('" & PVAR_COMPANY_CODE & "' ,'" & TextBox1.Text & "','" & Serial1.Text & _
    "'," & TextBox2.Text & ", '" + DateTimePicker1.Value.ToString("D") + "' ,'" + _
    DateTimePicker2.Value.ToString("D") + "','" & PVAR_USER_CODE & "','" + _
    Now.ToString("F") + "')"

この部分のみが原因で、文字列から日時を変換する際の構文エラー:

Now.ToString("F")

なぜ、私は知らないが、私がに変更するとき

Now.ToString("D")

それはうまく機能しますが、日付のみを保存します。日付と時刻を挿入したい。

4

1 に答える 1

2

簡単な答えは、すべてを SQL ステートメントに組み込まないことです。代わりにパラメーター化されたクエリを使用し、代わりにパラメーター値をDateTime.Now(またはDateTime.UtcNow) に設定します。

パラメーター化されたクエリは、SQL インジェクション攻撃に対する効果的な防御にもなります。一般的なデータ (特にユーザーから提供されたデータ) を SQL ステートメントに直接挿入することは、大惨事の元凶です。

詳細については、ドキュメントをSqlCommand.Parameters参照してください。または、ADO.NET に関するまともなチュートリアルや本について調べてください。

于 2010-06-01T09:43:36.673 に答える