2013-03-28 42 views
-1

我有一個問題。我需要從ASP.NET插入DateTime到SQL中。我有一個日曆插入日期和兩個DropDownlist。一個小時,其他幾分鐘。我不知道如何從日曆和時間(小時和分鐘)一次插入日期。此代碼僅插入日期。例如28.3.2013 0:00:00從asp.net插入datetime到sql server

cmd.CommandText = "insert into Milniky (datetime) values ('" + CalendarDz.SelectedDate + DropDownListHz + DropDownListMz +"')"; 
+0

您是否調試過101並打印出命令以查看它試圖發送給SQL Server的內容?你能告訴我們嗎? –

+2

查看SQL查詢不應該像這樣通過字符串連接構建的事實...在構建它之後,查詢的實際字符串值是多少?我們無法從這裏看到類似'DropDownListMz'的運行時值。 – David

+0

一般來說,在數據庫中使用潛在的保留關鍵字作爲列名也不是一個好主意。你可以通過用方括號('[datetime]')將它明確地定義爲一個對象名,但是仍然可以避免使用這個名字。畢竟,這個名稱甚至沒有傳達它代表的內容,只是它所擁有的數據類型。 – David

回答

1

在插入時應考慮創建DateTime對象和參數以防止出現錯誤數據。

int hour = int.Parse(DropDownListHz.SelectedValue); 
int minute = int.Parse(DropDownListMz.SelectedValue); 
DateTime dt = CalendarDz.SelectedDate; 
dt.AddHours(hour); 
dt.AddMinutes(minutes); 
cmd.CommandText = "insert into Milniky (datetime) values (@dt)"; 
cmd.Parameters.Add(new SqlParameter("@dt", dt.ToString("yyyy-MM-dd HH:mm:ss"))); 

您可能還需要使用DateTime.TryParse(s)提供更好的用戶體驗

但是在特定的命令,我懷疑你需要一個空間和一個冒號添加到語句來連接的日期。

目前你的命令看起來像是在創建類似2013-3-28130的東西,你想要的東西就像2013-3-28 1:30

cmd.CommandText = "insert into Milniky (datetime) values ('" + CalendarDz.SelectedDate.ToString("MM/dd/yyyy") + " " + DropDownListHz + ":" + DropDownListMz +"')"; 
+0

在我看來,使用查詢參數會更好。只是說... – David

+0

是的,我已經更新了它。 – Kirk

+0

調試寫入「1. 3. 2013 0:00:00 18:20」string – Mirek