2016-11-29 14 views
-2

データベーステーブルに今日の日付を挿入しようとしています。今日の日付の代わりにこの値"1900-01-01"がデータベースに挿入されています。私は、SQL Serverを使用しています2012年SQL Server 2012に間違った日付が挿入されました

ASP.NETマークアップ:

<asp:TextBox ID="msnDate" runat="server" Enabled="false"></asp:TextBox> 
<cc1:CalendarExtender ID="msnDate_CalendarExtender" runat="server" Enabled="True" TargetControlID="msnDate"> 
</cc1:CalendarExtender> 

コードビハインド私はこのコードを書いた:

msnDate_CalendarExtender.SelectedDate = DateTime.Today; 

これは、INSERTクエリがあるの

protected void btnSave_Click(object sender, EventArgs e) 
{ 
    SqlConnection cs = new SqlConnection("Data Source=DESKTOP-3T94FQ0;Initial Catalog=RAMS;Integrated Security=False;UID=sa;Password=sa123;"); 
    SqlCommand cmd = new SqlCommand("INSERT INTO [tbl_musannet] ([pessenger_id],[mus_date]) VALUES('"+ ddlPessengerList.Text + "','" + msnDate.Text +"')", cs); 
    cs.Open(); 
    cmd.ExecuteNonQuery(); 
    cs.Close(); 
} 
+0

ここでは挿入クエリは見つかりません。代わりにaspコード –

+0

が表示されます。ありがとうございます。挿入クエリが追加されました。 – bluebay

+0

'msnDate.Text'の代わりに' msnDate_CalendarExtender.SelectedDate'を試しましたか?インジェクションに注意してください。 –

答えて

0

形式を明示的に設定せずに日付の文字列表現を使用しています。つまり、CultureあなたのASP.NETアプリケーションの設定とデータベースサーバーの設定にもよる。

(例えば05/06/11 2011年6月5日、または2011年5月6日、または2005年6月11日のでしょうか?)

あなたは、あまりにも潜在的なSQLインジェクションに問題があります。これらの問題の両方をパラメータを使用して修正することができます。パラメータは、あいまい性がゼロのデータベースサーバーに未加工の日付/時刻値を渡します(書式付きの表現ではありません)。

Int32 pessengerId; 
if(!Int32.TryParse(ddlPessengerList.Text, out pessengerId)) { 
    // abort, show error message 
    return; 
} 

DateTime msnDate = msnDate.Value; // your `msnDate` control should have a strongly-typed way of getting the raw DateTime value, you should not attempt to parse a textual representation of a date/time. 
if(msnDate < new DateTime(2016, 01, 01)) { 
    // sanity-check the date range, if it's too far in the past or future reject it, according to your business rules 
    return; 
} 

SqlCommand cmd = cs.CreateCommand(); 
cmd.CommandText = "INSERT INTO tbl_musannet (pessenger_id, mus_date) VALUES(@passengerId, @musDate)"; 
cmd.Parameters.AddWithValue("@pessenger_id", pessengerId); 
cmd.Parameters.AddWithValue("@musDate ", msnDate); 

cs.Open(); 
cmd.ExecuteNonQuery(); 
cs.Close() 
+0

Ok。ありがとうございました。私はこれを試している。 – bluebay

+0

[あなたは既にAddWithValue()を使用して停止できますか?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithueue-already/)をチェックしてください。 '.AddWithValue()'の使用を止めてください - 予期しない驚くべき結果につながるかもしれません... –

関連する問題