簡體   English   中英

c# 通過 DateTime.Parse 訪問 DateTime UPDATE

[英]c# Access DateTime UPDATE via DateTime.Parse

OleDbConnection con = new OleDbConnection(constring)
con.Open()
cmdstring = "UPDATE table SET date="+DateTime.Parse(txtdate.Text).ToString("dd/MM/yyyy") + " WHERE id = 1"
OleDbCommand cmd = new OleDbCommand(cmdstring,con)
cmd.ExecuteNonQuery()
con.Close()

當我嘗試在我的一個表單中使用此代碼更新表格時,它完美地完成了。 但是在另一種形式中,我使用相同的代碼來更新相同的表和相同的列,但是我遇到了一個令人困惑的錯誤。 語法錯誤(缺少運算符)

示例:txtbox 中的日期:17.1.1987

出現錯誤的日期:17.1.198

DateTime.Parse 沒問題。 我嘗試了它返回的內容。 它返回 4 位數的年份。 但是更新訪問數據庫時發生了什么?

問候...

始終使用參數化查詢。 特別是當您在 Access 中處理日期時,您可能會遇到很多麻煩。

    DateTime dt;
    bool canParse = DateTime.TryParseExact(txtdate.Text,
                                      "dd/MM/yyyy",CultureInfo.InvariantCulture, 
                                      DateTimeStyles.None, 
                                      out dt);
    if(canParse)
    {
         string sQuery = "UPDATE table SET date = @pdate WHERE ID = @pid";
         OleDbCommand updateCmd = new OleDbCommand(sQuery, Conn);
         updateCmd.Parameters.Add("@pdate", OleDbType.Date).Value = dt;
         updateCmd.Parameters.Add("@pid", OleDbType.Integer).Value = 1; 
         int rowsAffected = updateCmd.ExecuteNonQuery();
         /* Use the result from operation for some notification */
    }
cmdstring = "UPDATE table SET date='"+DateTime.Parse(txtdate.Text).ToString("dd/MM/yyyy") + "' WHERE id = 1"

您需要在日期值前后使用單引號。

暫無
暫無

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

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