2010-08-28 75 views
0

正在使用C#,VS 2005和SQL 2000參數日期轉換

我有日期調整問題我有場SQL表如下

領域:

datefrom  
dateto 

我在C#中的SQL查詢

string sql = "insert into companymast (cname, datefrom, dateto) values(@cname, @datefrom, @dateto)"; 

SqlCommand cmd = new SqlCommand(sql, con); 
cmd.Parameters.Add("@cname",SqlDbType.Varchar(50)).Values = cname.text; 
cmd.Parameters.Add("@datefrom",SqlDbType.Datetime).Values = maskedTextBox1.text; 
cmd.Parameters.Add("@dateto",SqlDbType.Datetime).Values = maskedTextBox2.text; 
cmd.ExecuteNonQuery(); 

但是上面的那個拋錯了像日期非轉換字符串到日期

我必須把日期dd/MM/yyyy格式代碼,103

讓我怎麼辦?

請幫助我。

回答

0

maskedBox1.text是一個字符串。您正在將它分配給SqlParameter的數據成員,並且它會嘗試將接收到的數據轉換爲您請求的數據類型。

更可靠的解決方案是將顯式轉換爲DateTime,並將轉換後的值傳遞給SqlParameter。通過這種方式,您可以更好地控制轉換,並且您可以準確查看出現錯誤的位置和原因。例如:

DateTime fromDate = DateTime.Parse(maskedTextBox1.text); 
cmd.Parameters.Add("@datefrom",SqlDbType.Datetime).Values= fromDate; 

對於DateTime.Parse,請參見:http://msdn.microsoft.com/en-us/library/1k1skd40.aspx

+0

是它接受時間日期格式(DD/MM/YYYY)?。 – mahesh 2010-08-28 06:33:49

+0

取決於它使用的'CultureInfo',它又默認爲當前線程的文化,但可以被覆蓋(詳細信息應該在MSDN文檔中)。對於用戶輸入來說,使用用戶的文化被認爲是很好的做法。如果你想保持安全,使用'Calendar'控件而不是'TextBox',那麼你不必擔心日期的文本表示。 – tdammers 2010-08-29 11:27:30