2012-07-31 33 views
0

我有一個問題,使用壓延控制..我在文本框中獲取日期...我必須將此插入到數據庫..使用asp.net與c#如何從asp.net c#插入datetime屬性到sql server中的日期列?

在我的web應用程序領域屬性設置爲datetime,表中該列的數據類型爲date ..

我該怎麼做?

我正的錯誤是:

varchar數據類型到datetime數據類型的轉化在外的範圍內的值導致 。該語句已終止。

任何人都可以在這方面幫助我嗎?

預先感謝

+0

您可能要包括有關數據庫模式和您使用更新數據庫的C#的一些信息。但是,這聽起來像你沒有在你的數據庫中使用正確的列類型。 – 2012-07-31 05:52:59

+0

我通常不會使用asp.net web表單,所以我需要知道:您是自己插入/更新日期,還是控制應該這樣做?問題可能與日期,地區設置一樣,日期的格式。 – 2012-07-31 05:56:11

+0

感謝Layoric爲您的及時回覆其實我有兩個fileds在我的數據庫(sqlserver2008r2)表中的數據類型的日期現在從應用程序(.NET 4)端我想插入一些值在該表中,但在asp.net C#中有不日期數據類型我不得不使用日期時間datetype,但我得到這個錯誤..我不知道如何解決這個問題? – Hardworker 2012-07-31 06:00:24

回答

3

我收到的錯誤是:varchar數據類型爲datetime數據類型的轉換導致外的範圍內的值。

這聽起來像你試圖插入它作爲一個字符串,這是一個普遍的壞主意。您應該使用參數化SQL並將該值設置爲參數,仍爲.NET DateTime。有關參數化SQL的示例,請參閱SqlCommand.Parameters的文檔。您應始終儘可能長時間保持數據的自然類型。

當然,它仍然是仍然如果您嘗試插入超出SQL可存儲範圍的DateTime值,則可能會出現此錯誤。特別是,我認爲SQL的年度下限爲1753。如果你的價值是DateTime.MinValue出於某種原因(1月1日,1AD),那麼你仍然會遇到這個問題。你是否爲你試圖插入的值添加了診斷?

+0

我有這樣的DateTime問題 - 我的主要答案也列出。但是我遇到了兩個問題,我遇到的一個問題是DateTime不足以處理FileTime。所以SQL 2008 R2在SQL中引入了DateTime2。這解決了我的問題(一個淺層修復,但它工作);唉,如果可能的話,總是使用參數@ jon-skeet說。 – jamesbar2 2012-07-31 06:19:16

-1

嘗試一件事首先,嘗試在該列中插入01/01/2012,因爲這可能是因爲錯誤的文化....這可能是MM/DD/YYYY或DD/MM/YYYY

首先嚐試這個01/01/2012,看看是否工作。

謝謝

0

對不起,我的第一個答案錯過了你的問題。嘗試使用標準參數系統添加參數。

command.CommandText =「INSERT INTO FooTable(FooDate)VALUES(@FooDate)」; command.Parameters.AddWithValue(「@ FooDate」,DateToUse.Date);

使用.Date將只返回對象的日期部分。這裏還有一個參考吧Date vs DateTime

0

如果您使用的是參數化查詢,我沒有任何麻煩,從ASP.NET日曆控件到包含DATE類型的列SQL Server數據庫表中插入DateTime

使用這樣的事情:

// define INSERT statement - of course, yours will look quite different! 
string insertStmt = "INSERT INTO dbo.DateTest(TheDate) VALUES(@DateValue);"; 

// set up connection and SqlCommand to do insert 
using(SqlConnection conn = new SqlConnection("....your-connection-string-here....")) 
using (SqlCommand cmd = new SqlCommand(insertStmt, conn)) 
{ 
    // add the parameters - the @DateValue - to the SqlCommand object and 
    // define it's datatype (on the database) and set the value to be stored 
    cmd.Parameters.Add("@DateValue", SqlDbType.Date).Value = Calendar1.SelectedDate; 

    // open connection, execute command, close connection 
    conn.Open(); 
    cmd.ExecuteNonQuery(); 
    conn.Close(); 
} 
+0

感謝marc_s它爲我工作:) – Hardworker 2012-07-31 06:48:30

相關問題