2010-12-13 49 views
0
<asp:TextBox ID="txtBox" runat="server"> 
</asp:TextBox> 
<asp:CalendarExtender ID="ce" runat="server" TargetControlID="txtBox" Format="dd-MMM-yyyy"> 
</asp:CalendarExtender> 

using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection239"].ToString())) 
{ 
    SqlCommand cmd = new SqlCommand("insert into tbl_testing(dttm) values('"+DateTime.Parse(txtBox.Text)+"')", con); 
    con.Open(); 
    cmd.ExecuteNonQuery(); 
} 

當我執行以下錯誤即將到來。我應該使用哪種格式將日期發送到sql服務器日期時間轉換錯誤asp.net與sql server

將char數據類型轉換爲日期時間數據類型導致超出範圍的日期時間值。 該聲明已被終止。 在此先感謝您的查詢

+0

給我們一些工作日期和日期的例子... – nik0lias 2010-12-13 09:41:11

回答

0
mm-dd-yyyyThh:mm:ss 
2

使用的參數,而不是字符串連接。 不僅您的日期時間問題消失了,而且您的查詢也不會受到sql注入的攻擊。

接下來,您還可以使用DateTimePicker而不是文本框,對不對?

var command = conn.CreateCommand(); 
command.CommandText = "insert into tbl_testing(thecol) values(@p_someDate)"; 
command.Parameters.Add ("@p_someDate", SqlDbType.DateTime).Value = datetimePicker.Value; 
command.ExecuteNonQuery(); 
+0

查詢有時會執行。但是當我把12月31 - 2010年,它給了我錯誤。請提供我的解決方案。 – 2010-12-13 08:53:14

2

使用下面的代碼來代替:

 SqlCommand cmd = new SqlCommand("insert into tbl_testing(dttm) values(@dttm)", con); 
     cmd.Parameters.AddWithValue("@dttm", DateTime.Parse(txtBox.Text)); 
     con.Open(); 
     cmd.ExecuteNonQuery(); 
+0

我試過這個,但沒有工作... – 2010-12-13 08:58:22

+0

非常感謝。我的問題現在解決了。 – 2010-12-13 09:07:14

1

只是傳遞通過的SqlParameter值而從不使用字符串連接。

0

確保服務器(本地或其他)使用正確的時間。例如,如果它的英國人或美國人。日期也包裹在''中。看來你正在將它包裹在「」中?