簡體   English   中英

錯誤插入DateTime c#type到SQL DateTime列

[英]error insert DateTime c# type to SQL DateTime column

我正在嘗試向我的SQLEXPRESS數據庫發出INSERT命令,並在嘗試向我的DateTime列輸入值時收到錯誤。

這是我使用的sql命令:

SqlDateTime sTime = new SqlDateTime(book.PublishedDate);                

string sql = string.Format("Insert into Books" +
"(Name, PublishDate, IsInternal) Values" +
"('{0}', '{1}', '{2}')",
book.Name, sTime.Value, book.IsInternal);

book.PublishedDate - 是DateTime類型,PublishedDate列是sql DateTime

我收到以下錯誤:將varchar數據類型轉換為日期時間數據類型導致超出范圍的值。

我怎么解決這個問題?

使用參數化查詢。 幾乎所有您可能正在使用的數據訪問技術都支持它們。 它們允許您將日期作為日期處理,而不是將所有內容轉換為字符串。

例如(ADO.Net SqlCommand)

SqlCommand cmd = new SqlCommand("Insert into Books (Name,PublishDate,IsInternal) Values (@Name,@PublishDate,@IsInternal)");
cmd.Parameters.Add(new SqlParameter("@Name", System.Data.SqlDbType.VarChar, 50));
cmd.Parameters.Add(new SqlParameter("@PublishDate", System.Data.SqlDbType.DateTime));
cmd.Parameters.Add(new SqlParameter("@IsInternal", System.Data.SqlDbType.Bit));

cmd.Parameters["@Name"].Value = book.Name;
cmd.Parameters["@PublishDate"].Value = book.PublishedDate;
cmd.Parameters["@IsInternal"].Value = book.IsInternal;

人們在客戶端代碼和SQL數據庫之間報告數據類型問題時所犯的最大錯誤源是,無論出於什么原因,他們都將所有內容轉換為字符串。 這不僅通常效率較低,而且您還依賴於至少兩次轉換在兩者之間正確發生(類型 - >字符串和字符串 - >類型),並且通常至少有一次轉換將留給任何默認轉換功能是。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM