2015-10-16 36 views
0

我試圖進入這就是在一個文本框的日期爲datetime類型的列日期更改爲完全不同的值時,保存到數據庫

的代碼如下

txtbookissue_date.Text = DateTime.Now.Date 
    txtbookreturn_date.Text = DateAdd(DateInterval.Day, 7, DateTime.Now.Date) 

當我將這兩個值插入數據庫(插入到書籍....)中,例如17-02-1984等值顯示在數據庫中,而不是例如26-2-2015

我做了一點研究,發現SQL解釋爲「26減2減2015」而不是日期。

打印Date(txtbookissue_date.Text)給出正確的結果,唯一的問題是將其保存到數據庫中。

這個解決方案顯然是要在單引號之日起,即'26-2-2015'而不僅僅是26-2-2015,由於我使用的是最新的功能我決定改變

txtbookissue_date.Text = DateTime.Now.Date 

txtbookissue_date.Text= "'"+DateTime.Now.Date+"'" 

但它返回一個錯誤,類似'不能將varchar類型轉換爲日期類型,超出範圍異常'

我該如何解決?任何幫助,將不勝感激。

txtbookissue_date.Text = DateTime.Now.Date 
    txtbookreturn_date.Text = DateAdd(DateInterval.Day, 10, DateTime.Now.Date) 

Protected Sub btn_issue_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_issue.Click 
    con.Open() 
    cmd.CommandText = "insert into Book (book_id, book_name, book_author,publisher,mem_id,mem_name,issue_date,return_date) values('" & txtbookissue_id.Text & "','" & txtibookssue_name.Text & "','" & txtbookissue_author.Text & "','" & txtbookissue_publi.Text & "','" & txtbookissue_memid.Text & "','" & txtbookissue_memname.Text & "'," & txtbookissue_date.Text & "," & txtbookreturn_date.Text & ")" 
    cmd.Connection = con 
    cmd.ExecuteNonQuery() 
    con.Close() 
    Response.Redirect("Welcome.aspx") 
End Sub 
+3

你的代碼不會編譯。向我們展示您實際使用的代碼。 – user1666620

+0

顯示您用於將數據插入數據庫的代碼。 – user1666620

+0

17-02-1894,而不是1984.謝謝。 – StringerBell

回答

2

您將插入日期作爲文本。我的意思是,當你需要插入'2015-02-26'時,你試圖用另一種格式插入它。事實上,你應該使用你的SQL查詢參數。你的sql語句應該是這樣的

insert into Book (book_id, book_name, book_author,publisher,mem_id,mem_name,issue_date,return_date) values(@book_id, @book_name, @book_author,@publisher,@mem_id,@mem_name,@issue_date,@return_date) 

在執行查詢之前,你應該在command對象中設置參數。

cmd.Parameters.AddWithValue("@return_date", DateAdd(DateInterval.Day, 10, Date.Now.Date)) 

有關使用參數的訪問,你可以去看看here

+0

謝謝大家,使用像魅力一樣工作的參數,@fofik,你的代碼工作,我甚至沒有打破汗水,只是複製它,並將其粘貼到我的代碼,然後改變了一些東西:)。 – StringerBell

1

首先的更多信息,我會強烈建議使用Paramaters

其次,因爲您想將日期格式化爲不是默認文化的字符串。我建議你使用String.Format()或ToString()(examples)。

由於您的數據庫很可能需要日期時間。您可以使用DateTime.ParseExact將字符串解析回日期時間。請看this回答一個howto。

讓我知道如果這有幫助,如果不是,你需要提供給我們更多的信息。

+0

看來我只是不得不使用參數來工作,但我會保持您的示例鏈接書籤,可能會派上用場,謝謝。 – StringerBell

0

如果您要將string放入DateTime列,請在將值放入數據庫之前將其轉換回原來的類型。

DateTime issueDate = DateTime.Parse(txtbookissue_date.Text); 
DateTime returnDate = DateTime.Parse(txtbookreturn_date.Text);